수색…
통사론
- 함수 ([ DISTINCT ] expression) -DISTINCT는 선택적 매개 변수입니다
- AVG ([ALL | DISTINCT] 표현식)
- COUNT ({[ALL | DISTINCT] 식] | *})
- GROUPING (<column_expression>)
- MAX ([ALL | DISTINCT] 표현식)
- MIN ([ALL | DISTINCT] 표현식)
- SUM ([ALL | DISTINCT] 표현식)
- VAR ([ALL | DISTINCT] 표현식)
OVER ([partition_by_clause] order_by_clause) - VARP ([ALL | DISTINCT] 표현식)
OVER ([partition_by_clause] order_by_clause - STDEV ([ALL | DISTINCT] 표현식)
OVER ([partition_by_clause] order_by_clause) - STDEVP ([ALL | DISTINCT] 표현식)
OVER ([partition_by_clause] order_by_clause)
비고
데이터베이스 관리에서 집계 함수는 여러 행의 값이 특정 기준에서 입력으로 그룹화되어 집합, 가방 또는 목록과 같은 더 중요한 의미 또는 측정의 단일 값을 형성하는 기능입니다.
MIN returns the smallest value in a given column
MAX returns the largest value in a given column
SUM returns the sum of the numeric values in a given column
AVG returns the average value of a given column
COUNT returns the total number of values in a given column
COUNT(*) returns the number of rows in a table
GROUPING Is a column or an expression that contains a column in a GROUP BY clause.
STDEV returns the statistical standard deviation of all values in the specified expression.
STDEVP returns the statistical standard deviation for the population for all values in the specified expression.
VAR returns the statistical variance of all values in the specified expression. may be followed by the OVER clause.
VARP returns the statistical variance for the population for all values in the specified expression.
집계 함수는
SELECT
문에서 "리턴 된 숫자 데이터 열"을 계산하는 데 사용됩니다. 기본적으로 선택한 데이터의 특정 열 결과를 요약합니다. - SQLCourse2.com
모든 집계 함수는 NULL 값을 무시합니다.
합집합
Sum
함수는 그룹의 모든 행의 값을 합계합니다. group by 절을 생략하면 모든 행이 합계됩니다.
select sum(salary) TotalSalary
from employees;
TotalSalary |
---|
2500 |
select DepartmentId, sum(salary) TotalSalary
from employees
group by DepartmentId;
DepartmentId | TotalSalary |
---|---|
1 | 2000 년 |
2 | 500 |
조건부 집계
지불 표
고객 | Payment_type | 양 |
---|---|---|
베드로 | 신용 | 100 |
베드로 | 신용 | 300 자 |
남자 | 신용 | 1000 |
남자 | 차변 | 500 |
select customer,
sum(case when payment_type = 'credit' then amount else 0 end) as credit,
sum(case when payment_type = 'debit' then amount else 0 end) as debit
from payments
group by customer
결과:
고객 | 신용 | 차변 |
---|---|---|
베드로 | 400 | 0 |
남자 | 1000 | 500 |
select customer,
sum(case when payment_type = 'credit' then 1 else 0 end) as credit_transaction_count,
sum(case when payment_type = 'debit' then 1 else 0 end) as debit_transaction_count
from payments
group by customer
결과:
고객 | credit_transaction_count | debit_transaction_count |
---|---|---|
베드로 | 2 | 0 |
남자 | 1 | 1 |
AVG ()
집계 함수 AVG ()는 주어진 표현식의 평균 (보통 열의 숫자 값)을 반환합니다. 전 세계의 도시에서 인구의 연간 계산이 포함 된 표가 있다고 가정합니다. 뉴욕시의 기록은 다음과 유사합니다.
예제 테이블
도시 이름 | 인구 | 년 |
---|---|---|
뉴욕시 | 8,550,405 | 2015 |
뉴욕시 | ... | ... |
뉴욕시 | 8,000,906 | 2005 년 |
지난 10 년간 도시 이름, 인구 측정 및 측정 연도가 포함 된 표에서 뉴욕시, 미국의 평균 인구를 선택하려면 다음을 수행하십시오.
질문
select city_name, AVG(population) avg_population
from city_population
where city_name = 'NEW YORK CITY';
모집단이 시간이 지남에 따라 평균화되기 때문에 측정 연도가 쿼리에서 사라지는 방법에 유의하십시오.
결과
도시 이름 | 평균 인구 |
---|---|
뉴욕시 | 8,250,754 |
참고 : AVG () 함수는 값을 숫자 유형으로 변환합니다. 이는 날짜 작업시 유의해야합니다.
목록 연결
이 SO 응답에 대한 부분적인 신용.
List Concatenation은 값을 각 그룹에 대한 단일 문자열로 결합하여 열 또는 표현식을 집계합니다. 각 값 (공백 또는 생략시 쉼표)을 구분하는 문자열로 결과의 값 순서를 지정할 수 있습니다. SQL 표준의 일부는 아니지만 모든 주요 관계형 데이터베이스 공급 업체는 자체 방식으로 지원합니다.
MySQL
SELECT ColumnA
, GROUP_CONCAT(ColumnB ORDER BY ColumnB SEPARATOR ',') AS ColumnBs
FROM TableName
GROUP BY ColumnA
ORDER BY ColumnA;
오라클 및 DB2
SELECT ColumnA
, LISTAGG(ColumnB, ',') WITHIN GROUP (ORDER BY ColumnB) AS ColumnBs
FROM TableName
GROUP BY ColumnA
ORDER BY ColumnA;
PostgreSQL
SELECT ColumnA
, STRING_AGG(ColumnB, ',' ORDER BY ColumnB) AS ColumnBs
FROM TableName
GROUP BY ColumnA
ORDER BY ColumnA;
SQL 서버
SQL Server 2016 및 이전 버전
(CTE는 DRY 원칙 을 장려하기 위해 포함됨)
WITH CTE_TableName AS (
SELECT ColumnA, ColumnB
FROM TableName)
SELECT t0.ColumnA
, STUFF((
SELECT ',' + t1.ColumnB
FROM CTE_TableName t1
WHERE t1.ColumnA = t0.ColumnA
ORDER BY t1.ColumnB
FOR XML PATH('')), 1, 1, '') AS ColumnBs
FROM CTE_TableName t0
GROUP BY t0.ColumnA
ORDER BY ColumnA;
SQL Server 2017 및 SQL Azure
SELECT ColumnA
, STRING_AGG(ColumnB, ',') WITHIN GROUP (ORDER BY ColumnB) AS ColumnBs
FROM TableName
GROUP BY ColumnA
ORDER BY ColumnA;
SQLite
주문하지 않고 :
SELECT ColumnA
, GROUP_CONCAT(ColumnB, ',') AS ColumnBs
FROM TableName
GROUP BY ColumnA
ORDER BY ColumnA;
순서 지정에는 하위 쿼리 또는 CTE가 필요합니다.
WITH CTE_TableName AS (
SELECT ColumnA, ColumnB
FROM TableName
ORDER BY ColumnA, ColumnB)
SELECT ColumnA
, GROUP_CONCAT(ColumnB, ',') AS ColumnBs
FROM CTE_TableName
GROUP BY ColumnA
ORDER BY ColumnA;
카운트
행 수를 셀 수 있습니다.
SELECT count(*) TotalRows
FROM employees;
TotalRows |
---|
4 |
또는 부서별 직원 수를 계산하십시오.
SELECT DepartmentId, count(*) NumEmployees
FROM employees
GROUP BY DepartmentId;
DepartmentId | 직원 수 |
---|---|
1 | 삼 |
2 | 1 |
NULL
값을 계산하지 않는 효과로 열 / 표현식을 셀 수 있습니다.
SELECT count(ManagerId) mgr
FROM EMPLOYEES;
mgr |
---|
삼 |
(null 값 managerID 열이 하나 있습니다.)
또한 COUNT 와 같은 다른 함수의 내부에서 DISTINCT 를 사용하여 집합의 DISTINCT 멤버 만 찾으면 작업을 수행 할 수 있습니다.
예 :
SELECT COUNT(ContinentCode) AllCount
, COUNT(DISTINCT ContinentCode) SingleCount
FROM Countries;
다른 값을 반환합니다. SingleCount 는 개별 대륙을 한 번만 계산하고 AllCount 는 중복을 포함합니다.
대륙 코드 |
---|
OC |
유럽 연합 |
같이 |
없음 |
없음 |
AF |
AF |
AllCount : 7 SingleCount : 5
맥스
열의 최대 값을 찾습니다.
select max(age) from employee;
위의 예에서는 employee
테이블의 열 age
에 대해 가장 큰 값을 반환합니다.
통사론:
SELECT MAX(column_name) FROM table_name;
최소
열의 최소값 찾기 :
select min(age) from employee;
위의 예에서는 employee
테이블의 열 age
에 대해 가장 작은 값을 리턴합니다.
통사론:
SELECT MIN(column_name) FROM table_name;