mysql 쿼리 질문입니다. 0 2 1,234

by 제로나인 [MySQL] [2016.10.10 17:05:00]


여러개의 테이블이 조인된 형태로

15년도 검색과 16년도 검색을 한뒤 15년 16년을 UNION ALL로 합친 후에

회사의 랭킹을 뽑아야 하는데요.

회사가 15년에는 없다가 16년에 생긴 경우

16년을 기준으로 (15년 데이터는 무시)

-- 회사의 기준은 16년 등록된것 기준으로 (15년에 데이터가 있어도 16년에 없는 회사면 무시)

# report_month, company_id, name, medias, digital, total
'2015', '4', 'Able C & C ', '3768912', '0', '3768912'
'2016', '4', 'Able C & C ', '649782', '0', '649782'
>> 2015 / 7 / Aekyung / 0 / 0 / 0
'2016', '7', 'Aekyung', '21600', '0', '21600'
>> 2015 / 8 / Aesop Korea / 0 / 0 / 0
'2016', '8', 'Aesop Korea', '25500', '0', '25500'
'2015', '10', 'AMI', '504700', '0', '504700'
'2016', '10', 'AMI', '92600', '0', '92600'

위의 데이터처럼 뽑으려고 하는데요.

막히는 부분이 15년에는 없는 회사를 어떻게 표시되도록 해야하는지 궁금합니다.

>> 2015 / 7 / Aekyung / 0 / 0 / 0
>> 2015 / 8 / Aesop Korea / 0 / 0 / 0

이 두줄의 데이터를 추가하고싶은데 어떻게 해야할지요?...........

 

 

by 마농 [2016.10.10 17:41:56]
SELECT '2015' report_month
     , a.company_id
     , a.name
     , IFNULL(b.medias , 0) medias
     , IFNULL(b.digital, 0) digital
     , IFNULL(b.total  , 0) total
  FROM t a
  LEFT OUTER JOIN t b
    ON b.report_month = '2015'
   AND b.company_id   = a.company_id
 WHERE a.report_month = '2016'
 UNION ALL
SELECT a.report_month
     , a.company_id
     , a.name
     , a.medias
     , a.digital
     , a.total
  FROM t a
 WHERE a.report_month = '2016'
;

 


by 제로나인 [2016.10.10 17:57:32]

감사합니다 마농님!
매번 도움받고 갑니다 : )

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입