MYSQL 입니다.
-- DATA
# LG DISPLAY
# ('LG1', 'LG2', 'LG3', 'LG4', 'LG5')
# APPLE
# ('APPLE1', 'APPLE2', 'APPLE3', 'APPLE4', 'APPLE5')
# SAMSUNG ELECTRONICS
# ('SAMSUNG1', 'SAMSUNG2', 'SAMSUNG3', 'SAMSUNG4', 'SAMSUNG5')
-- EXAMPLE QUERY
SELECT COUNT(*)
FROM TSET
WHERE id IN
# ('LG1', 'LG2', 'LG3', 'LG4', 'LG5')
# ('APPLE1', 'APPLE2', 'APPLE3', 'APPLE4', 'APPLE5')
# ('SAMSUNG1', 'SAMSUNG2', 'SAMSUNG3', 'SAMSUNG4', 'SAMSUNG5')
-- RESULT
| NAME | COUNT | |---------------------|-------| | LG DISPLAY | 23 | | APPLE | 4 | | SAMSUNG ELECTRONICS | 32 |
또는
| LG DISPLAY | APPLE | SAMSUNG ELECTRONICS | |------------|-------|---------------------| | 23 | 4 | 32 |
위 EXAMPLE QUERY 처럼 해당 DATA 값의 카운트를 RESULT 처럼 출력 하고 싶습니다.
해당 작업을 하나의 쿼리로 처리할 수 있는 방법 있나요?
LG DISPLAY, APPLE, SAMSUNG ELECTRONICS 은 테이블에 없는 값입니다.
현재 시도 해본건
SELECT
(IF(id IN ('LG1', 'LG2', 'LG3', 'LG4', 'LG5'), COUNT(*), 0)) AS 'LG DISPLAY',
(IF(id IN ('APPLE1', 'APPLE2', 'APPLE3', 'APPLE4', 'APPLE5'), COUNT(*), 0)) AS 'APPLE',
(IF(id IN ('SAMSUNG1', 'SAMSUNG2', 'SAMSUNG3', 'SAMSUNG4', 'SAMSUNG5'), COUNT(*), 0)) AS 'SAMSUNG ELECTRONICS'
FROM TEST where id in ('LG1', 'LG2', 'LG3', 'LG4', 'LG5', 'APPLE1', 'APPLE2', 'APPLE3', 'APPLE4', 'APPLE5', 'SAMSUNG1', 'SAMSUNG2', 'SAMSUNG3', 'SAMSUNG4', 'SAMSUNG5');
인데
| LG DISPLAY | APPLE | SAMSUNG ELECTRONICS | |------------|-------|---------------------| | 0 | 0 | 78 |
값이 SAMSUNG ELECTRONICS에 몰리네요..
SELECT
sum(case when id IN ('LG1', 'LG2', 'LG3', 'LG4', 'LG5') then 1 else 0 end) AS 'LG DISPLAY',
sum(case when id IN ('APPLE1', 'APPLE2', 'APPLE3', 'APPLE4', 'APPLE5') then 1 else 0 end) AS 'APPLE',
sum(case when id IN ('SAMSUNG1', 'SAMSUNG2', 'SAMSUNG3', 'SAMSUNG4', 'SAMSUNG5') then 1 else 0 end) AS 'SAMSUNG ELECTRONICS'
FROM ~~
혹시 이런 형태로 카운트 해보는 것은 어떨까요?
감사합니다!
IF(COUNT()) 형태로 작성하셨네요. COUNT(IF()) 형태로 작성하셔야 합니다.
- 오류 : IF(id IN ('LG1', 'LG2', 'LG3', 'LG4', 'LG5'), COUNT(*), 0)
- 수정 : COUNT(IF(id IN ('LG1', 'LG2', 'LG3', 'LG4', 'LG5'), 1, null))