Server/DB
재귀 CTE 정리 (코딩 테스트용)
2025.04.22
CTE(Common Table Expression) = 일시적인 결과 테이블.그 중에서 자기 자신을 재참조하는 걸 재귀 CTE라고 부름.MySQL, PostgreSQL, SQL Server 등에서 사용 가능.Oracle은 CONNECT BY 같은 다른 방식 사용.기본 문법-- 기본 문법WITH RECURSIVE CTE_NAME (columns...) AS ( -- anchor member (초기값) SELECT ... FROM ... UNION ALL -- recursive member (자기 자신 호출) SELECT ... FROM CTE_NAME JOIN ...)SELECT * FROM CTE_NAME;첫 SELECT: 시작점 (anchor)두 번째 SELE..
Server/DB
순위함수 ROW_NUMBER(), RANK(), DENSE_RANK()
2025.04.03
1. 순위함수ROW_NUMBER()각 행에 고유한 순번을 부여한다. 동일한 값이라도 서로 다른 번호가 부여된다.중복 없는 순차적 번호 부여가 필요할 때 사용RANK() 동일한 값에 대해 같은 순위를 부여하고, 다음 순위는 건너뛴다. (공동 1위가 2개면 다음 순위는 3위)DENSE_RANK()동일한 값에 대해 같은 순위를 부여하지만, 다음 순위를 건너뛰지 않는다. (공동 1위가 2개여도 다음 순위는 2위) CREATE TABLE employee ( id INT, name VARCHAR(50), department VARCHAR(50), salary INT);idnamedepartmentsalary1김철수개발50002이영희개발50003박지민마케팅45004최다혜마케팅48005정민준개발4..
Server/DB
SQL 서브쿼리의 종류와 특징
2025.03.31
서브쿼리는 SQL에서 하나의 쿼리 내에 포함된 또 다른 쿼리이다.메인 쿼리의 조건이나 데이터를 보완하는 용도로 사용되며, 적절히 활용하면 복잡한 데이터 처리를 효율적으로 수행할 수 있다. 1. WHERE 절 서브쿼리 (중첩 서브쿼리)a. 단일행 서브쿼리서브쿼리에서 한 개의 행만 반환한다. 주로 비교 연산자(>, =, )와 함께 사용된다.SELECT employee_id, salary FROM employees WHERE salary > ( SELECT AVG(salary) FROM employees);이 예시는 전체 직원의 평균 급여보다 높은 급여를 받는 직원들을 조회한다.b. 다중행 서브쿼리서브쿼리에서 여러 행의 값을 반환할 수 있다. IN, SOME(ANY), ALL 등과 함께 사용된다...
Server/DB
CASE, IF( )
2025.03.30
CASE여러 개의 조건을 지정할 수 있다.https://goto-helloworld.tistory.com/71SELECT name, salary, CASE WHEN salary > 5000 THEN 'High' WHEN salary BETWEEN 3000 AND 5000 THEN 'Medium' ELSE 'Low' END AS salary_levelFROM employees; IF( )특정 SQL 엔진(MySQL 등)에서 제공하는 함수로, 단순한 이진 조건을 처리할 때 사용된다.SELECT name, salary, IF(salary > 5000, 'High', 'Low') AS salary_level FROM employees;⇒ salary가 5000 초..
Server/DB
WHERE VS GROUP BY
2025.03.30
WHERE데이터를 필터링하는 데 사용된다.GROUP BY보다 먼저 실행된다.개별 행을 대상으로 조건을 적용한다.SELECT * FROM employees WHERE salary > 5000; GROUP BY데이터를 그룹화하는 데 사용된다.WHERE 이후, HAVING 이전에 실행된다.그룹 단위로 데이터를 집계할 때 사용된다.https://goto-helloworld.tistory.com/72SELECT department, AVG(salary) FROM employees GROUP BY department; [참고] 명령어 실행 순서WHEREGROUP BYHAVINGSELECTORDER BY