Recent Posts
Recent Comments
Archives
반응형
250x250
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today
Yesterday

Total
05-05 03:02
관리 메뉴

Hey Tech

[SQLite] GROUP BY: 데이터를 그룹화하기! (Feat. HAVING) 본문

AI & 빅데이터/SQLite

[SQLite] GROUP BY: 데이터를 그룹화하기! (Feat. HAVING)

Tony Park 2021. 2. 11. 08:50
728x90
반응형

안녕하세요, 오늘은 GROUP BY 구문을 통해 데이터를 그룹화하는 방법에 대해 공유해 드립니다.

바로 시작하죠!

GROUP BY는 언제 쓸까?

이전 포스팅에서 서로 다른 두 칼럼을 병합하는 방법에 대해 다루었습니다.

heytech.tistory.com/28?category=453619

 

[SQLite] 서로 다른 칼럼의 데이터 병합하기!

안녕하세요, 오늘은 서로 다른 칼럼의 데이터를 병합하는 방법에 대해 공유해 드립니다. 이번 포스팅에서도 SQLite 및 연습용 데이터셋(MLB 선수 정보)을 기반으로 설명해 드립니다. SQLite 및 연습

heytech.tistory.com

SELECT
	nameFirst || ' ' || nameLast AS FullName
FROM 
	People
LIMIT 20;

 

연습용 데이터셋(MLB 선수 정보)에서 nameFirst 칼럼과 nameLast 칼럼을 FullName이라는 이름의 칼럼으로 병합했었습니다.

헌데, 많은 선수 정보가 담겨 있다보면 분명히 동명이인이 나올 가능성이 높습니다.

그렇다면 어떤 이름이 가장 동명이인이 많을까요?

GROUP BY 실습

그래서 오늘은 GROUP BY 구문을 이용하여 이 문제를 해결해 보고자 합니다.

SELECT
	-- First name 과 Last name을 병합.
    nameFirst || ' ' || nameLast AS FullName,
    -- FullName 칼럼 개수 카운팅
    COUNT(nameFirst || ' ' || nameLast) AS Cnt_All
FROM
    People
    
-- FullName 칼럼에 따라 데이터를 그룹화
GROUP BY FullName
-- 동명이인 수가 2명이상일 경우에만 출력
HAVING Cnt_All > 1
-- 카운팅 값을 내림차순으로 정렬
ORDER BY Cnt_All DESC;

GROUP BY데이터를 그룹화해줍니다.

쉬운 예로서 게임에서 승리할 때의 안타 개수와 패배하는 날의 안타 개수의 차이를 보고 싶다면

"게임의 승패 여부"가 데이터를 나누는 기준이 될 것입니다.

 

마찬가지로 저희는 이번에 선수 이름별 동명이인 수를 구할 것이기 때문에 선수 이름에 따라 그룹화해주어야 합니다.

따라서 GROUP BY 구문에 이어 선수의 Full name을 저장한 FullName 칼럼을 입력해 주었습니다.

 

동명이인이 없는 경우에는 굳이 사람 수를 카운팅하여 데이터를 출력할 필요가 없기 때문에,

사람 수가 2 이상인 조건을 만족하는 데이터만 출력하도록 GROUP BY 구문 뒤에 HAVING 구문추가하였습니다.

 

그리고 가장 동명이인이 많은 이름을 보기 위해 ORDER BY 구문을 활용해 내림차순으로 정렬하였습니다(ORDER BY 구문은 아래 참고).

heytech.tistory.com/22?category=453619

 

[SQL] ORDER BY: 데이터 정렬하기(내림차순/오름차순)

안녕하세요, 지난 시간에는 SELECT 구문을 통해 데이터를 출력하는 방법에 대해 다루어 보았습니다. heytech.tistory.com/12 [SQL] 2시간 만에 끝내는 SQL#2: SELECT, ORDER BY, WHERE 안녕하세요, 오늘부터 SQLi..

heytech.tistory.com

출력 결과

위와 같이 Bob Smith과 John Sulivan이라는 이름이 각각 5명으로서 가장 동명이인이 많은 이름인 것을 확인할 수 있습니다.


포스팅 내용에 오류가 있을 경우 댓글 남겨주시면 감사드리겠습니다.

고맙습니다 :)

728x90
반응형
Comments