IT/MSSQL

[MSSQL] 집계함수 정의 및 예제

!? 2024. 2. 15.

 

MSSQL에서 제공하는 집계 함수들은 데이터를 그룹화하고 요약하는 데 사용됩니다. 이러한 함수들은 주로 GROUP BY 절과 함께 사용되며, 특정 조건에 따라 데이터를 그룹화하여 각 그룹에 대한 집계 결과를 계산합니다. 다음은 주요 MSSQL 집계 함수에 대한 설명과 각 함수의 예제입니다.

 

1. 집계함수 정리

 

COUNT 레코드의 수를 계산합니다.
SUM 숫자 열의 합을 계산합니다.
AVG 숫자 열의 평균을 계산합니다.
MIN 및 MAX 숫자 또는 날짜 열에서 최소/최대값을 찾습니다.
STDEV 및 VAR 표준 편차 및 분산을 계산합니다.
GROUP_CONCAT 여러 행의 값을 그룹으로 묶어 하나의 문자열로 만듭니다. 
FIRST_VALUE와 
LAST_VALUE
그룹 내에서 첫 번째 및 마지막 값 가져오기
ROW_NUMBER
RANK
DENSE_RANK
정렬된 결과에 대한 순위를 부여합니다.
CUME_DIST 누적 분포의 백분율을 계산합니다.
CHECKSUM_AGG 그룹 내 값의 체크섬을 계산합니다.
STRING_AGG 문자열 열을 결합하여 그룹 내에서 구분자로 분리된 값을 생성합니다.

 

2. 집계 함수 정의 및 예제

 

1. COUNT 함수

 - 레코드의 수를 계산합니다.

SELECT COUNT(*) AS TotalRecords
FROM TableName;

 

2. SUM 함수

 -  숫자 열의 합을 계산합니다.

SELECT SUM(Salary) AS TotalSalary
FROM Employee;

 

3. AVG 함수

 -  숫자 열의 평균을 계산합니다.

SELECT AVG(Price) AS AveragePrice
FROM Products;

 

4. MIN 함수  

-  숫자 또는 날짜 열에서 최소값을 찾습니다.

SELECT MIN(Age) AS MinAge
FROM Customers;

 

5. MAX 함수

 -  숫자 또는 날짜 열에서 최대값을 찾습니다.

SELECT MAX(Revenue) AS MaxRevenue
FROM Sales;

 

 

 

 

5. GROUP BY절과 함께 사용

 -  데이터를 그룹화하고 각 그룹에 대한 집계를 계산합니다.

SELECT Department, AVG(Salary) AS AvgSalary
FROM Employees
GROUP BY Department;

 

6. HAVING 절

 -  GROUP BY와 함께 사용되어 특정 조건을 만족하는 그룹만을 선택합니다.

SELECT Department, AVG(Salary) AS AvgSalary
FROM Employees
GROUP BY Department
HAVING AVG(Salary) > 50000;

 

7. STDEV 및 VAR

 -  표준 편차 및 분산을 계산합니다.

SELECT STDEV(Marks) AS StdDeviation
FROM ExamResults;

 

8. GROUP_CONCAT

 -  여러 행의 값을 그룹으로 묶어 하나의 문자열로 만듭니다. (MySQL의 GROUP_CONCAT과 유사)

SELECT Department, GROUP_CONCAT(EmployeeName) AS EmployeeList
FROM Employees
GROUP BY Department;

 

 

 

 

9. FIRST_VALUE와 LAST_VALUE

 -  그룹 내에서 첫 번째 및 마지막 값 가져오기

SELECT Department, FIRST_VALUE(EmployeeName) OVER (PARTITION BY Department ORDER BY Salary) AS LowestSalaryEmployee
FROM Employees;

 

10. ROW_NUMBER, RANK, DENSE_RANK

 -  정렬된 결과에 대한 순위를 부여합니다.

SELECT EmployeeName, Salary, 
       ROW_NUMBER() OVER (ORDER BY Salary DESC) AS RowNum,
       RANK() OVER (ORDER BY Salary DESC) AS Rank,
       DENSE_RANK() OVER (ORDER BY Salary DESC) AS DenseRank
FROM Employees;

 

11. CUME_DIST

 -  누적 분포의 백분율을 계산합니다.

SELECT EmployeeName, Salary,
       CUME_DIST() OVER (ORDER BY Salary) AS CumulativeDistribution
FROM Employees;

 

12. CHECKSUM_AGG

 -  그룹 내 값의 체크섬을 계산합니다.

SELECT Department, CHECKSUM_AGG(CHECKSUM(EmployeeName, Salary)) AS Checksum
FROM Employees
GROUP BY Department;

 

13. STRING_AGG

 -  문자열 열을 결합하여 그룹 내에서 구분자로 분리된 값을 생성합니다.

SELECT Department, STRING_AGG(EmployeeName, ', ') AS EmployeeList
FROM Employees
GROUP BY Department;

 

 

이것은 일부 MSSQL 집계 함수의 간단한 예제입니다. 각 함수는 특정 작업에 적합하며, 데이터베이스에서 원하는 결과를 얻기 위해 조합하여 사용할 수 있습니다.

댓글