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 ~~
혹시 이런 형태로 카운트 해보는 것은 어떨까요?