table_a
| idx | pay | date |
| 1 | 0 | 2021-01-01 |
| 2 | 0 | 2021-01-01 |
| 3 | 1 | 2021-01-01 |
| 4 | 1 | 2021-01-02 |
| 5 | 2 | 2021-01-02 |
| 6 | 2 | 2021-01-02 |
| 7 | 0 | 2021-01-03 |
| 8 | 1 | 2021-01-03 |
| 9 | 2 | 2021-01-03 |
이런 테이블이 있다고 할때 pay의 방식에 따라 날짜별로 값을 합쳐볼려고 합니다
pay의 방식은 0,1 로 현금 ,카드 등이 있습니다 각 pay 값들을 날짜 하나로 출력하고자 합니다
| date | pay_a | pay_b |
| 2021-01-10 | 9 | 7 |
| 2021-01-09 | 5 | 4 |
| 2021-01-08 | 7 | 5 |
| 2021-01-07 | 1 | 1 |
| 2021-01-06 | 2 | 2 |
| 2021-01-05 | 3 | 3 |
| 2021-01-04 | 4 | 4 |
| 2021-01-03 | 5 | 5 |
| 2021-01-02 | 6 | 6 |
SELECT dt
, SUM(CASE pay WHEN 0 THEN hit END) pay_0
, SUM(CASE pay WHEN 1 THEN hit END) pay_1
, SUM(CASE pay WHEN 2 THEN hit END) pay_2
, SUM(hit) tot
FROM table_a
WHERE dt BETWEEN '2021-01-01' AND '2021-01-10'
GROUP BY dt
ORDER BY dt DESC
;
다 이해가 가는데 when 0은 조건절 0일때 인데 then hit end 의 뜻을 여쭤볼수 있을까요?'
then이 반환값으로 알고있는데 현 질문에서는 hit 필드에 있는 값을 사용하지 않을텐데 hit 필드의 값을 반환한다는 의미일까요?
아 hit 필드에 그값을 반환한다는 의미일까요?
원본과 결과표의 수치가 일치하지 않아 결과표의 값이 뭘 의미하는지? 추측을 해야만 했습니다.
저는 SUM(hit) 를 하는게 아닐까? 생각했습니다.
아니라면 아래 COUNT(*) 를 원하는 걸까요?
명확한 설명과 함께 값이 일치하는 원본 대비 결과표를 제시해 주시는게 좋습니다.
SELECT dt , COUNT(CASE pay WHEN 0 THEN 1 END) pay_0 , COUNT(CASE pay WHEN 1 THEN 1 END) pay_1 , COUNT(CASE pay WHEN 2 THEN 1 END) pay_2 , COUNT(*) tot FROM table_a WHERE dt BETWEEN '2021-01-01' AND '2021-01-10' GROUP BY dt ORDER BY dt DESC ;
아래의 값이 맞았습니다
다음 질문에는 좀 더 명확히 해보겠습니다 감사합니다!