Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- javascript
- SQL 고득점 KIT
- Lv. 3
- level 3
- softeer
- 티스토리챌린지
- 너비 우선 탐색
- Java
- Lv. 1
- DP
- Dynamic Programming
- SQL
- C언어
- dfs
- Python
- 깊이 우선 탐색
- 오블완
- 프로그래머스
- select
- group by
- Lv. 2
- programmers
- join
- bfs
- 자바스크립트
- 파이썬
- Lv. 0
- 동적계획법
- LEVEL 2
- 소프티어
Archives
- Today
- Total
몸과 마음이 건전한 SW 개발자
프로그래머스 SQL 고득점 Kit Lv. 2 SELECT 2문제 모음 본문
1. 3월에 태어난 여성 회원 목록 출력하기
https://school.programmers.co.kr/learn/courses/30/lessons/131120
SELECT
MEMBER_ID,
MEMBER_NAME,
GENDER,
DATE_FORMAT(DATE_OF_BIRTH, "%Y-%m-%d") AS DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE
MONTH(DATE_OF_BIRTH) = 3 AND
TLNO IS NOT NULL AND
GENDER = "W"
ORDER BY MEMBER_ID;
Key Point
MONTH 함수
문법 : MONTH(날짜)
설명 : 해당 날짜의 월이 출력
2. 재구매가 일어난 상품과 회원 리스트 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/131536
SELECT
USER_ID,
PRODUCT_ID
FROM ONLINE_SALE
GROUP BY
USER_ID,
PRODUCT_ID
HAVING COUNT(*) >= 2
ORDER BY
USER_ID,
PRODUCT_ID DESC;
Key Point
GROUP BY, HAVING 구문
GROUP BY
- 목적: GROUP BY 절은 선택한 열(여기서는 USER_ID와 PRODUCT_ID)에 기반하여 결과 세트를 그룹으로 나눕니다. 즉, 동일한 USER_ID와 PRODUCT_ID 값을 가진 행들을 하나의 그룹으로 묶습니다.
- 사용: 이 경우, 각 사용자(USER_ID)와 각 제품(PRODUCT_ID)에 대해 그룹을 만듭니다. 이렇게 하면 같은 사용자가 같은 제품을 구매한 모든 경우를 하나의 그룹으로 볼 수 있습니다.
- 결과: GROUP BY는 주로 집계 함수(예: COUNT(), SUM(), AVG() 등)와 함께 사용됩니다. 각 그룹에 대해 이러한 함수를 적용하여 그룹별 통계 또는 정보를 얻을 수 있습니다.
HAVING
- 목적: HAVING 절은 GROUP BY로 생성된 그룹에 조건을 적용하여 그 중 특정 조건을 만족하는 그룹만을 선택하기 위해 사용됩니다. 이는 WHERE 절과 비슷하지만, WHERE는 개별 행에 대한 조건을 설정하는 반면, HAVING은 그룹에 대한 조건을 설정합니다.
- 사용: 이 쿼리에서 HAVING COUNT(*) >= 2는 각 그룹(특정 사용자와 특정 제품 조합)의 레코드 수가 2개 이상인 경우에만 해당 그룹을 결과에 포함시킵니다. 즉, 동일한 제품을 2회 이상 구매한 사용자만을 대상으로 합니다.
- 차이점: WHERE 절은 데이터를 그룹화하기 전에 개별 행을 필터링하는 반면, HAVING은 그룹화된 후에 그룹을 필터링합니다. 따라서 집계 함수와 함께 조건을 적용할 때는 HAVING을 사용해야 합니다.
예시:
다음과 같은 쿼리를 고려해보겠습니다:
SELECT 열1, 열2, COUNT(*)
FROM 테이블
GROUP BY 열1, 열2
HAVING COUNT(*) > 10;
여기서:
- GROUP BY 열1, 열2: 테이블의 데이터를 열1과 열2의 조합별로 그룹화합니다.
- HAVING COUNT(*) > 10: 각 그룹에 10개 이상의 레코드가 있는 경우에만 해당 그룹을 결과에 포함시킵니다.
이 쿼리는 테이블에서 열1과 열2의 조합으로 그룹을 만들고, 각 그룹의 레코드 수가 10개를 초과하는 그룹의 열1, 열2 값과 그룹의 레코드 수를 반환합니다.
정리:
- GROUP BY는 열 기반으로 데이터를 그룹화합니다.
- HAVING은 그룹화된 결과에 대한 조건을 지정합니다.
- GROUP BY와 HAVING은 열 이름에 대해 사용되며, 테이블 이름 자체가 아닌 특정 열을 지칭합니
'SQL' 카테고리의 다른 글
프로그래머스 Lv. 2 최솟값 구하기 SQL (0) | 2024.01.01 |
---|---|
프로그래머스 Lv. 2 가격이 제일 비싼 식품의 정보 출력하기 SQL (0) | 2024.01.01 |
프로그래머스 SQL 고득점 Kit Lv 1 String, Date 2 문제 모음 (1) | 2023.12.30 |
프로그래머스 SQL 고득점 Kit Lv 1 IS NULL 4 문제 모음 (0) | 2023.12.30 |
프로그래머스 SQL 고득점 Kit Lv 1 SUM, MAX, MIN 2 문제 모음 (0) | 2023.12.29 |