Sobes.tech
Middle
50

SQL туралы айтыңыз: қандай JOIN-дар қолданасыз, терезе функциялары мен CTE-мен қандай тәжірибеңіз бар?

Сұралған компаниялар
Небольшая компания

AI-дан жауап

sobes.tech AI

SQL-да мен әртүрлі JOIN түрлерін жиі қолданамын:

  • INNER JOIN — екі кестеде де сәйкес келетін жазбаларды ғана қайтарады.
  • LEFT JOIN (LEFT OUTER JOIN) — сол жақ кестеден барлық жазбалар мен оң жақ кестеден сәйкес келетіндер, сәйкес келмегендер үшін NULL қайтарылады.
  • RIGHT JOIN (RIGHT OUTER JOIN) — керісінше, оң жақ кестеден барлық және сәйкес келетіндер, сәйкес келмегендер үшін NULL.
  • FULL OUTER JOIN — екі кестеден барлық жазбалар, сәйкес келмегендер үшін NULL.

Менде терезе функцияларымен жұмыс тәжірибесі бар, оларды аналитика мен агрегаттау үшін қолданамын, барлық нәтижені топтастырмай. Мысалы, айналмалы сомаларды есептеу, рангтау немесе кумулятивтік мәндерді анықтау үшін:

SELECT employee_id, department_id, salary,
       RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) as salary_rank
FROM employees;

CTE (Common Table Expressions) күрделі сұрауларды оқуды жеңілдету үшін пайдаланылады, әсіресе логиканы бөліп көрсету немесе рекурсивті сұраулар жасау кезінде:

WITH DepartmentSalaries AS (
    SELECT department_id, AVG(salary) as avg_salary
    FROM employees
    GROUP BY department_id
)
SELECT e.employee_id, e.salary, d.avg_salary
FROM employees e
JOIN DepartmentSalaries d ON e.department_id = d.department_id
WHERE e.salary > d.avg_salary;

Бұл сұрауларды құрылымдауға көмектеседі және кодты қолдауды жеңілдетеді.