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
- 연구
- Aspect
- 분산
- MySQL
- NLP
- paper review
- SQL
- 알고리즘
- Bert
- 머신러닝
- leetcode
- outer join
- SQL 첫걸음
- 가상환경
- dfs
- 논문리뷰
- 프로그래머스
- gpt1
- 자연어처리
- transformer
- ChatGPT
- 백준
- join
- 코딩테스트
- GPT
- ABAE
- deepseek
- 그래프
- 파이썬
- LLM
Archives
- Today
- Total
huginn muninn
[LEETCODE] 1193. Monthly Transactions I SQL, if와 case 본문


# Write your MySQL query statement below
-- 월별, 국가별로 거래건수와 총액, 승인된 거래 건수와 총액을 찾는 sql 쿼리를 작성하세요.
SELECT
DATE_FORMAT(TRANS_DATE,"%Y-%m") AS MONTH,
COUNTRY,
COUNT(ID) AS TRANS_COUNT,
SUM(IF(STATE='APPROVED',1,0)) AS APPROVED_COUNT,
SUM(AMOUNT) AS TRANS_TOTAL_AMOUNT,
SUM(CASE WHEN STATE="APPROVED" THEN AMOUNT ELSE 0 END) AS APPROVED_TOTAL_AMOUNT
FROM TRANSACTIONS
GROUP BY
DATE_FORMAT(TRANS_DATE,"%Y-%m"),
COUNTRY
ORDER BY 1
월별, 국가별로 거래건수와 총액, 승인된 거래 건수와 총액을 찾는 sql 쿼리를 구현하는 것이 문제!
별로 어려운 문제는 아니였지만 case 문과 if문의 null 처리 방식에 대해 공부하기 좋다.
NULL 처리:
- CASE 문에서 ELSE 절을 생략하면 조건이 모두 false인 경우 NULL이 반환
SELECT
CASE WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
END AS grade
FROM students;
이 경우, score가 70 미만인 학생의 grade 값은 NULL이 됩니다.
- IF 문에서 false_value를 생략하면 조건이 false인 경우 NULL이 반환
SELECT
IF(score >= 90, 'A',
IF(score >= 80, 'B',
IF(score >= 70, 'C')))
AS grade
FROM students;
- 이 경우, score가 70 미만인 학생의 grade 값은 NULL이 됩니다.
이와 같은 차이점 때문에, 상황에 따라 CASE 문 또는 IF 문을 선택할 때 NULL 처리에 대한 고려가 필요하다.
예를 들어, NULL 값을 특정 값으로 대체해야 하는 경우라면 ELSE 절 또는 false_value를 사용하여 명시적으로 처리해야한다.