수색…


통사론

  • 함수 ([ 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;


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow