집계함수(Aggregate Functions)
- 여러 행에서 값을 계산하여 하나의 결과를 반환하는 함수
- 종류
- COUNT() : 행의 개수
- SUM() : 숫자 열의 합 계산
- AVG() : 숫자 열의 평균 계산
- MAX() : 열에서 가장 큰 값 반환
- MIN() : 열에서 가장 작은 값 반환
SELECT COUNT(*) AS totalEmployees FROM Employees;
SELECT SUM(salary) AS totalSalary FROM Employees;
SELECT AVG(salary) AS averageSalary FROM Employees;
SELECT MAX(salary) AS maxSalary FROM Employees;
SELECT MIN(salary) AS minSalary FROM Employees;
INSTR()
- 문자열 내에서 특정 문자열이 처음 나타나는 위치 반환
SELECT INSTR('abcde', 'cd') AS Position;
CONCAT()
SELECT CONCAT('Hello', ' ', 'World') AS Greeting;
테이블 별칭(Table Alias)
- 테이블 이름에 임시 별칭을 부여하여 쿼리에서 더 간결하게 사용 가능
SELECT e.name, e.salary
FROM Employees e
WHERE e.salary > 5000;
서브쿼리(Subquery)
- SQL 쿼리 내에 포함된 또 다른 SQL 쿼리
- 일반적으로 WHERE, FROM, SELECT 절에서 사용됨
SELECT name, age
FROM Employees
WHERE age > (SELECT AVG(age) FROM Employees);
SELECT department, (SELECT COUNT(*) FROM Employees e WHERE e.department = d.department) AS EmployeeCount
FROM Departments d;
MOD()
- 나머지를 계산하는 함수
- 첫 번째 숫자를 두 번째 숫자로 나눈 나머지 반환
SELECT MOD(10, 3) AS Remainder;
CASE WHEN THEN ELSE END 컬럼 조건식
SELECT name,
CASE
WHEN age < 18 THEN 'Minor'
WHEN age >= 18 AND age < 65 THEN 'Adult'
ELSE 'Senior'
END AS AgeGroup
FROM Employees
IF()
SELECT name, IF(salary > 5000, 'High', 'Low') AS salaryLevel
FROM Employees;
IFNULL()
- 첫 번째 인자가 NULL이면 두 번째 인자를 반환하고, 아니면 첫 번째 인자를 반환
SELECT name, IFNULL(salary, 0) AS Salary
FROM Employees;