[TIL] SQL 지난 강의 복습 / DATETIME에서 DATE로 형 변환 / SQL 피벗 테이블
select col1, special_col
from
(select col1, col2 special_col
from table1
)aselect col1
from table1 t left join table2 a on t.colA = a.colA
select col1
from table1 t inner join table2 a on t.colA = a.colAwhere 테이블명.컬럼명 is not null
select a.order_id,
a.customer_id,
a.restaurant_name,
a.price,
b.name,
b.age,
b.gender
from food_orders a left join customers b on a.customer_id=b.customer_id
where b.customer_id is not null
SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%Y-%m-%d') AS 날짜
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
-> SELECT 에서 DATETIME을 안바꾸고 그대로 가져와서 틀렸었다.
DATE_FORMAT() 을 사용해서 연-월-일로 형 변환
select restaurant_name, --> 행에 들어갈 내용 --
max(if(hh='15', cnt_order, 0)) "15", --> 각 한 컬럼씩 들어갈 내용 --
max(if(hh='16', cnt_order, 0)) "16",
max(if(hh='17', cnt_order, 0)) "17",
max(if(hh='18', cnt_order, 0)) "18",
max(if(hh='19', cnt_order, 0)) "19",
max(if(hh='20', cnt_order, 0)) "20"
from
(
select a.restaurant_name,
substring(b.time, 1, 2) hh,
count(1) cnt_order
from food_orders a inner join payments b on a.order_id=b.order_id
where substring(b.time, 1, 2) between 15 and 20
group by 1, 2 --> restaurant_name 과 hh 로 group by --
) a
group by 1 -- restaurant_name 으로 다시 한번 더 group by; max와 쌍이라고 생각 --
order by 7 desc -- 7번째 열인 "20" (hh='20') 으로 descending --