sql 예제 - 여러 열에 그룹 기준 사용




by란 group (3)

Group By XX에 대해 같은 값을 가진 모든 것을 한 Group By X 넣는 것을 의미합니다.

Group By X, YX와 Y가 같은 값을 가진 모든 것을 한 Group By 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

이것은 두 개의 열로 그룹화 할 때 "같은 주제와 학기를 가진 모든 그룹이 동일한 그룹에 있도록 그룹화 한 다음 모든 집계 함수 (개수, 합계, 평균 등) 를 계산하기 때문입니다 . ) 각 그룹에 대해 " . 이 예에서, 이것은 우리가 그들을 세면, 1 학기에 ITB001을하는 사람이 있고, 2 학기에 ITB001을하는 사람들이 명 있다는 사실에 의해 증명됩니다. MKB114를하는 두 사람 모두 학기 1에 있기 때문에 아무 것도 없습니다 학기 2 행 (데이터가 그룹 "MKB114, 학기 2"에 들어 가지 않음)

다행히도 그것은 의미가 있습니다.

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

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


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) WHERE (절은 레코드를 필터링하는 데 사용됩니다)

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

5) HAVING (절은 GROUP BY 절과 함께 사용되어 반환 된 행의 그룹을 조건이 TRUE 인 그룹으로 제한합니다)

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

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

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

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

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

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

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

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


이는 잘 테스트되고 최적화 된 솔루션을 갖춘 greatest-n-per-group 문제 greatest-n-per-group 일반적인 문제입니다. 개인적으로 필자는 Bill Karwin ( 다른 솔루션이 많은 원본 게시물) 의 왼쪽 가입 솔루션을 선호합니다.

이 공통적 인 문제에 대한 해결책은 MySQL 공식 설명서 에서 찾을 수 있습니다 ! 일반적인 쿼리의 예 :: 특정 열의 그룹 별 최대 값을 유지하는 행을 참조하십시오.





sql group-by