여러 열에서 그룹화 사용


1035

나는 요점을 이해한다 GROUP BY x

그러나 어떻게 GROUP BY x, y작동하며 무엇을 의미합니까?


2
이 질문이 제기하는 것처럼 설명하지는 않습니다. GROUP BY 절은 하나 이상의 필드를 사용할 수 있습니다. 고객 별 그룹; GROUP BY 성, 이름; 연도 별, 그룹 별, SKU 등 그룹
Bill

답변:


2026

Group By X하나의 그룹에 X에 대해 같은 값을 가진 모든 것을 넣는 것을 의미 합니다.

Group By X, Y하나의 그룹에 X와 Y에 대해 동일한 값을 가진 모든 것을 넣는 것을 의미 합니다.

예를 사용하여 설명하기 위해 누가 대학에서 어떤 과목에 참석하는지와 관련하여 다음 표가 있다고 가정 해 봅시다.

Table: Subject_Selection

Subject   Semester   Attendee
---------------------------------
ITB001    1          John
ITB001    1          Bob
ITB001    1          Mickey
ITB001    2          Jenny
ITB001    2          James
MKB114    1          John
MKB114    1          Erica

group by주제 열에 만을 사용하는 경우 말하다:

select Subject, Count(*)
from Subject_Selection
group by Subject

당신은 다음과 같은 것을 얻을 것입니다 :

Subject    Count
------------------------------
ITB001     5
MKB114     2

ITB001에는 5 개의 항목이 있고 MKB114에는 2 개의 항목이 있으므로

우리가 group by두 개의 열에 있다면 :

select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester

우리는 이것을 얻을 것입니다 :

Subject    Semester   Count
------------------------------
ITB001     1          3
ITB001     2          2
MKB114     1          2

이는 두 개의 열로 그룹화 할 때 "주제와 학기가 동일한 모든 사람이 같은 그룹에 있도록 그룹화 한 다음 모든 집계 함수 (Count, Sum, Average 등) 를 계산하기 때문입니다 . ) 이 그룹 "의 각 . 이 예에서는 1 학기에는 ITB001을 수행하는 사람 이 3 명이고 2 학기에는 ITB001을 수행하는 사람 이 2 명 이라는 사실을 보여줍니다 . 2 학기 행 ( "MKB114, Semester 2"그룹에 데이터가 없음)

잘만되면 그것은 의미가 있습니다.


11
@ Smashery : 이것도 GROUP BY A,B같은 의미 GROUP BY B,A입니까?
tumchaaditya

23
그렇습니다. 나는 그들이 서로만큼 효율적인지 확실하게 말할 수는 없지만 동일한 결과를 줄 것입니다.
Smashery 2014 년

2
여기에 차이점이 GROUP BY a, b있으며 GROUP BY a AND b두 번째 항목에는 "동일 그룹"이없는 동일한 내용을 가진 그룹화 된 항목 만 나열되므로 여기에 추가해야합니다 . 이 경우 출력은 첫 번째 출력과 동일합니다.
Dwza

5
열별로 그룹화하는 순서는 중요하지 않습니다. Semester의 위 그룹 예에서, Subject는 같은 결과를
주었을

2
또한, B에 의해 A, B 그룹으로 그룹 A는 동일한 결과를 반환하지 않습니다 - 행이 다른 순서로 표시됩니다
엉덩이

33

GROUP BY절은 집계 함수와 함께 사용되어 결과 집합을 하나 이상의 열로 그룹화합니다. 예 :

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

이 순서를 기억하십시오 :

1) SELECT (데이터베이스에서 데이터를 선택하는 데 사용됨)

2) FROM (표를 나열하기 위해 절이 사용됨)

3) 어디에서 (절을 사용하여 레코드를 필터링)

4) GROUP BY (SELECT 문에서 여러 개의 레코드에 걸쳐 데이터를 수집하고 하나 이상의 열로 결과를 그룹화하기 위해 절을 사용할 수 있음)

5) HAVING (절이 GROUP BY 절과 함께 사용되어 리턴 된 행 그룹이 조건이 TRUE 인 그룹으로 만 제한됨)

6) ORDER BY (키워드는 결과 집합을 정렬하는 데 사용됨)

집계 함수를 사용하는 경우 이러한 모든 기능을 사용할 수 있으며 이것이 순서대로 설정되어야합니다. 그렇지 않으면 오류가 발생할 수 있습니다.

집계 함수는 다음과 같습니다.

MIN은 주어진 열에서 가장 작은 값을 반환합니다

SUM은 주어진 열의 숫자 값의 합계를 반환합니다

AVG는 주어진 열의 평균값을 반환합니다

COUNT는 주어진 열의 총 값 수를 반환합니다

COUNT (*)는 테이블의 행 수를 반환합니다.


1
그러나 2 개의 열을 어디에 두어야합니까, 2 개 이상의 열을 기반으로 집계하는 방법이 문제입니다
Chaitanya Bapat

안녕하세요 Chaitanya, 이것이 당신이 요구하는 것인지 모르겠지만 몇 가지 예를 들어 드리겠습니다. 이 방법으로 집계 함수를 사용하는 제품 테이블이있는 경우 다음 두 가지 시나리오가 있습니다. SELECT AVG (instock) FROM products; 제품 테이블의 평균 재고 단위를 계산합니다. 이제 제품 범주별로 재고 단위를 계산하려면 다음과 같이 GROUP BY 절과 함께 AVG 함수를 사용해야합니다. SELECT categoryId, AVG (instock) FROM products GROUP BY categoryId;
S. Mayol

이것은 원격으로 질문에 대답하지 않습니다 ... 여기서 질문은 주어진 예제에서 설명 된 것처럼 "대상"과 "학기"의 "연쇄 그룹화"를 동시에 달성하는 방법입니다.
MahNas92
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.