한 주간 SQL 데이터 베이스를 다시 한번 복습을 하였습니다.
처음 sql을 접하였을 때에는 알고리즘을 정리하는 거부터 명령어 선택까지 무엇부터 진행을 해야 할지 감이 안 잡혀 한참을 생각을 하며 해설을 보면서 작성을 하였지만 복습을 다시 해보니 사용에 대해서 이해를 할 수 있게 되었고
활용하는 것이 훨신 쉬워졌습니다.
만들면서 가장 기억에 남는 것들은
만들다 보니 알게 된 것
GROUP BY = 그룹 짓기
|
ORDER BY = 순서대로
|
COUNT = 그룹 안에 횟수 세기
|
DESC = 역순으로 정렬하기
|
SUM = 그룹안에 총합 구하기
|
|
DISTINCT = 중복값 제거
|
|
AVG = 그룹안에 평균 값
|
|
각자 서로 잘사용 되는 명령어가 있다.
JOIN으로 두 테이블의 값을 연산하기
-- - [실습] 주문 가격과 수수료율을 곱하여 주문별 수수료 구하기 -- -- (조회 컬럼 : 주문 번호, 식당 이름, 주문 가격, 수수료율, 수수료) -- *수수료율이 있는 경우만 조회 SELECT f.order_id '주문 번호', f.restaurant_name '식당 이름', f.price '주문 가격', p.vat '수수료율', FORMAT(f.price*p.vat, 0.) '수수료' FROM food_orders f inner join payments p on f.order_id = p.order_id
![](https://blog.kakaocdn.net/dn/BgNKp/btsEZmPUZIR/p07nhZblP02BOHUWXqNczK/img.png)
각 테이블에서 필요한 값을 가지고 오고 각 테이블의 값을 연산하여 새로운 값을 만들어 낸다.
SQL로 Pivot Table 만들어보기
-- 2) [실습] 음식점별 시간별 주문건수 Pivot Table 뷰 만들기 (15~20시 사이, 20시 주문건수 기준 내림차순) 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 f.restaurant_name , SUBSTR( p.`time`, 1, 2) hh, COUNT(1) cnt_order FROM food_orders f inner join payments p on f.order_id = p.order_id WHERE SUBSTR( p.`time`, 1, 2) BETWEEN 15 and 20 GROUP BY f.restaurant_name, SUBSTR( p.`time`, 1, 2) )a GROUP BY 1 ORDER BY 7 DESC
![](https://blog.kakaocdn.net/dn/GZdwr/btsEYBfTSQ1/OEoWKCELoAqQJSjlqRhurK/img.png)
max(if(hh='15', cnt_order, 0)) "15" 이 부문에 max값을 넣어주지 않으면 값이 이상하게 나오므로 알아둘
![](https://blog.kakaocdn.net/dn/bujFhN/btsE0qqKkiE/7mR6ZvnOkjLqkM0pZKgB80/img.png)
어느부분에 무엇을 적어야 행이 되고 열이 되는지를 잘 기억해 두면 좋을 것 같다.
여러 번의 연산을 한 번의 SQL 문으로 수행하기 (Subquery)
select column1, special_column from ( /* subquery */ select column1, column2 special_column from table1 ) a
select order_id, restaurant_name, if(over_time>=0, over_time, 0) over_time from ( select order_id, restaurant_name, food_preparation_time-25 over_time from food_orders ) a
![](https://blog.kakaocdn.net/dn/diD8bX/btsEZzau22e/xtdtHvNr79zECDvaj4EsR1/img.png)
![](https://blog.kakaocdn.net/dn/pL5V8/btsEWLpE7Rf/uBYVLPPWtNzGKUrNR5xtsk/img.png)
이렇게 내가 만들면서 새롭게 이해하게 되었 던 것들이며
알고리즘을 짤 때 이부분을 주의하면서 만들어야겠다고 생각을 했습니다.
'AI 코딩 교육 WIL' 카테고리의 다른 글
2024 3월 2주차 WIL (0) | 2024.03.09 |
---|---|
2024 3월 1주차 WIL (0) | 2024.03.03 |
2024 2월 4주차 WIL (1) | 2024.02.24 |
2024 1월 3주차 AI 코딩 WIL (0) | 2024.02.16 |
2024 2월 3주차 AI 코딩 WIL (0) | 2024.02.16 |