SELECT c.area_id, if(c.area_id is null, '전체', c.name) name, IF(c.enabled = 'Y', 'Y', '-') enabled,
SUM(1) T,
SUM(IF(a.enabled = 'Y', 1, 0)) TY,
SUM(IF(a.area_type = 'S' AND a.enabled = 'Y', 1, 0)) SY,
SUM(IF(a.area_type = 'S' AND a.enabled = 'N', 1, 0)) SN,
SUM(IF(a.area_type = 'H' AND a.enabled = 'Y', 1, 0)) HY,
SUM(IF(a.area_type = 'H' AND a.enabled = 'N', 1, 0)) HN
FROM Area a
JOIN Area c ON a.title_area_id = c.area_id
WHERE a.area_type IN ('S', 'H')
AND c.area_type = 'C'
GROUP BY c.name WITH ROLLUP
SUM(1) T,
SUM(IF(a.enabled = 'Y', 1, 0)) TY,
SUM(IF(a.area_type = 'S' AND a.enabled = 'Y', 1, 0)) SY,
SUM(IF(a.area_type = 'S' AND a.enabled = 'N', 1, 0)) SN,
SUM(IF(a.area_type = 'H' AND a.enabled = 'Y', 1, 0)) HY,
SUM(IF(a.area_type = 'H' AND a.enabled = 'N', 1, 0)) HN
FROM Area a
JOIN Area c ON a.title_area_id = c.area_id
WHERE a.area_type IN ('S', 'H')
AND c.area_type = 'C'
GROUP BY c.name WITH ROLLUP
SELECT if (t.no = 1, t.no, c.area_id) area_id,
if (t.no = 1, '전체', c.name) name, IF(c.enabled = 'Y', 'Y', '-') enabled,
SUM(1) T,
SUM(IF(a.enabled = 'Y', 1, 0)) TY,
SUM(IF(a.area_type = 'S' AND a.enabled = 'Y', 1, 0)) SY,
SUM(IF(a.area_type = 'S' AND a.enabled = 'N', 1, 0)) SN,
SUM(IF(a.area_type = 'H' AND a.enabled = 'Y', 1, 0)) HY,
SUM(IF(a.area_type = 'H' AND a.enabled = 'N', 1, 0)) HN
FROM Area a
JOIN Area c ON a.title_area_id = c.area_id
JOIN (select 1 no from dual union select 2 from dual) t
WHERE a.area_type IN ('S', 'H')
AND c.area_type = 'C'
and t.no < 3
GROUP BY if (t.no = 1, t.no, c.area_id)
if (t.no = 1, '전체', c.name) name, IF(c.enabled = 'Y', 'Y', '-') enabled,
SUM(1) T,
SUM(IF(a.enabled = 'Y', 1, 0)) TY,
SUM(IF(a.area_type = 'S' AND a.enabled = 'Y', 1, 0)) SY,
SUM(IF(a.area_type = 'S' AND a.enabled = 'N', 1, 0)) SN,
SUM(IF(a.area_type = 'H' AND a.enabled = 'Y', 1, 0)) HY,
SUM(IF(a.area_type = 'H' AND a.enabled = 'N', 1, 0)) HN
FROM Area a
JOIN Area c ON a.title_area_id = c.area_id
JOIN (select 1 no from dual union select 2 from dual) t
WHERE a.area_type IN ('S', 'H')
AND c.area_type = 'C'
and t.no < 3
GROUP BY if (t.no = 1, t.no, c.area_id)
SELECT if (t.no = 1, t.no, c.area_id) area_id,
if (t.no = 1, '전체', c.name) name, IF(c.enabled = 'Y', 'Y', '-') enabled,
SUM(1) T,
SUM(IF(a.enabled = 'Y', 1, 0)) TY,
SUM(IF(a.area_type = 'S' AND a.enabled = 'Y', 1, 0)) SY,
SUM(IF(a.area_type = 'S' AND a.enabled = 'N', 1, 0)) SN,
SUM(IF(a.area_type = 'H' AND a.enabled = 'Y', 1, 0)) HY,
SUM(IF(a.area_type = 'H' AND a.enabled = 'N', 1, 0)) HN
FROM Area a
JOIN Area c ON a.title_area_id = c.area_id
JOIN copy_t t
WHERE a.area_type IN ('S', 'H')
AND c.area_type = 'C'
and t.no < 3
GROUP BY if (t.no = 1, t.no, c.area_id)
도시별 카운트, 전체 카운트
GROUP BY ... WITH ROLLUP 을 이용한 방법과
(WITH ROLLUP null 이 나와서 속이 썩히네. 어떻게 고쳐야 하나?)
copy_t 라는 테이블을 만들어 사용하는 방법이다.
copy_t 테이블 이용 블로그
http://blog.naver.com/whwlfnsl?Redirect=Log&logNo=70028760617
copy_t 를 이용한 방법은
느끼기에 "대단한 꼼수다~ 월척이구나~ ㅋㅋㅋ"
사람들 참 머리 좋다!
https://msevents.microsoft.com/CUI/Register.aspx?culture=ko-KR&EventID=1032350911&CountryCode=KR&IsRedirect=false
'LINUX > DB' 카테고리의 다른 글
기존 테이블 생성 쿼리 확인 (0) | 2009.06.09 |
---|---|
25가지 SQL작성법 (0) | 2009.04.30 |
mysql 쿼리 문자열 검색 (0) | 2009.03.17 |
ORDER BY CASE (0) | 2008.12.04 |
InnoDB, MyISAM (0) | 2008.09.26 |