mysql 정렬법? 0 1 779

by 길가던분 mysql 정렬 [2018.06.25 03:38:09]


아래소스가 책에 있는 소스 인대 이걸 아래표처럼 김범수의 게산값에는 김범수의 봄만 더한거 윤종신은 윤종신의 봄만 더한거 합계는 두계를 더한거

이런식으로 쭉쭉 봄 여름 가을 겨울 이렇게 표현하고자하는대 어떻게 하면될까요?

season 김범수 윤종신 합계
계산값 계산값 계산값
여름 '' '' ''
가을 '' '' ''
겨울 '' '' ''


create database sqldb;

use sqldb;

create table pivottest (
uName  char(3),
season Char(2),
amount INT );

insert into pivottest VALUES
('김범수', '겨울', 10), ('윤종신', '여름', 15), ('김범수', '가을', 25), ('김범수', '봄', 23),
('김범수', '봄', 37), ('윤종신', '겨울', 40), ('김범수', '여름', 14), ('김범수', '겨울', 22)
('윤종신', '여름', 64);
select * from pivottest;

select uName,
	sum(if(season='봄', amount 0)) as '봄'
    sum(if(season='여름', amount 0)) as '여름'
    sum(if(season='가을', amount 0)) as '가을'
    sum(if(season='겨울', amount 0)) as '겨울'
    sum(amount AS= '합계' from pivotTest Group by uName;
    
    select season,
    sum(if(uName = '김범수' , amount, 0)) as '김범수' ,
    sum(if(uName = '윤종신' , amount, 0)) as '윤종신' ,
    sum(amount) as '합계' from pivottest group by season order by case when 'season' = '봄' then 1
																	  when 'season' = '여름' then 2
                                                                      when 'season' = '가을' then 3
                                                                      when 'season' = '겨울' then 4
                                                                      end;
by 마농 [2018.06.25 07:38:03]
SELECT season
     , IFNULL(SUM(CASE uName WHEN '김범수' THEN amount END), 0) 김범수
     , IFNULL(SUM(CASE uName WHEN '윤종신' THEN amount END), 0) 윤종신
     , SUM(amount) 합계
  FROM pivottest
 WHERE uName IN ('김범수', '윤종신')
 GROUP BY season
 ORDER BY INSTR('봄, 여름, 가을 그리고 겨울', season)
;

 

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