create table crime
(
cname varchar2(50),
sun number(20),
mon number(20),
tue number(20),
wed number(20),
thur number(20),
fri number(20),
sat number(20),
cnone number(20)
);
select * from crime;
-- greatest 사용
select cname, case when c.sun = greatest(sun, mon, tue, wed, thur, fri, sat, cnone) then '일요일'
when c.mon = greatest(sun, mon, tue, wed, thur, fri, sat, cnone) then '월요일'
when c.tue = greatest(sun, mon, tue, wed, thur, fri, sat, cnone) then '화요일'
when c.wed = greatest(sun, mon, tue, wed, thur, fri, sat, cnone) then '수요일'
when c.thur = greatest(sun, mon, tue, wed, thur, fri, sat, cnone) then '목요일'
when c.fri = greatest(sun, mon, tue, wed, thur, fri, sat, cnone) then '금요일'
when c.sat = greatest(sun, mon, tue, wed, thur, fri, sat, cnone) then '토요일'
end as "요일"
from crime c
where cname like '%살인%';
-- case 문 만 사용
select cname,
case when sun >= mon and sun >= tue and sun >= wed and sun >= thur and sun >= fri and sun >= sat then '일요일'
when mon >= sun and mon >= tue and mon >= wed and mon >= thur and mon >= fri and mon >= sat then '월요일'
when tue >= sun and tue >= mon and tue >= wed and tue >= thur and tue >= fri and tue >= sat then '화요일'
when wed >= sun and wed >= mon and wed >= tue and wed >= thur and wed >= fri and wed >= sat then '수요일'
when thur >= sun and thur >= mon and thur >= tue and thur >= wed and thur >= fri and thur >= sat then '목요일'
when fri >= sun and fri >= mon and fri >= tue and fri >= wed and fri >= thur and fri >= sat then '금요일'
when sat >= sun and sat >= mon and sat >= tue and sat >= wed and sat >= thur and sat >= fri then '토요일'
end as "요일"
from crime
where cname like '%살인%';
--unpivot 사용
select ct.cname, ct.item
from (select *
from crime
unpivot (cnt for item in (sun, mon, tue, wed, thur, fri, sat, cnone))
where cname like '%살인%') ct
order by cnt desc fetch first 1 rows only;
-- + 날짜를 한글로
select ct.cname, case when (ct.item = 'SUN') then '일요일'
when (ct.item = 'MON') then '월요일'
when (ct.item = 'TUE') then '화요일'
when (ct.item = 'WED') then '수요일'
when (ct.item = 'THUR') then '목요일'
when (ct.item = 'FRI') then '금요일'
when (ct.item = 'SAT') then '토요일'
end as "요일"
from (select *
from crime
unpivot (cnt for item in (sun, mon, tue, wed, thur, fri, sat, cnone))
where cname like '%살인%') ct
order by cnt desc fetch first 1 rows only;