그동안 준비했던 공모전 마감일이 오늘이라, 아티클 스터디가 끝난 뒤 갑자기 회의가 잡혔다. 5시까지는 여기에 발이 묶여서 오늘 자습을 많이 하지 못했다..😥
이제 오전시간도 잘 이용해서 보충해야겠다.
오늘의 아티클
https://yozm.wishket.com/magazine/detail/1519/
[주제]
[아티클 요약]
✅SQL잘하는 분들의 팁
WHERE절 시작하자마자 1=1이라는 아무의미 없는 조건을 넣어주고 행갈이를 한다음에 AND로 진짜 필터링을 하는 재밌는 응용도 있다.
4. 주석을 쓰자
=코드를 쓴 의도를 짧게 적어놓기
서브쿼리 단위, CASE,IF조건문 또는 WHERE절 필터링 조건을 쓸 때
무엇을?😮
-서브쿼리 단위로 의미 적기
=변수 별명짓기 (당장은 귀찮아도 전체 코드를 빠르게 이해하기 위해,, 그냥 변수로만 적어둔다면, 나중에 다시 찾아와야하는 상황이 발생할 수 있음)
google-’변수명 짓기 팁’을 검색해보자
[인사이트]
💡변수명 짓기 구글링 결과
아직 변수명 짓는 법에 감이 안온다. 이렇게까지 복잡한 함수나 변수를 다뤄본 적이 없고 대부분 문제에 주어져 있었기 때문이다.
그치만 변수명을 구체적으로 작성할 수 있다는 것에 대해 알게되었고, 변수를 이렇게 작성하기 위해서는 변수의 기본 개념과 종류에 대해서도 잘 알고 있어야할 것 같다.
행을 갈아쓰는 것에 대한 중요성은 이미 체감하고 있었고, 종종 문제를 풀면서 주석을 잘 활용해봐야겠다. (특정 칼럼을 불러온 것과 불러오지 않은 것에 차이를 모를 때는, 전체 삭제하고 다시 입력해서 실행했었는데, 주석을 쓰는게 훨씬 효율적일 것 같다)
💡주석달기 팁
[한줄주석]
#문장
또는
--문장
[여러줄주석]
/문장
문장
문장/
[단축키]
WIN) Ctrl+/ (주석 전환/해제 모두 가능)
(인사이트 정리하는 데 참고한 사이트: https://m.blog.naver.com/kijun/222930802349)
.
.
.
(음식점수 5개 이상, 주문수 30개 이상 → 수수료 0.5%
음식점수 5개 이상, 주문수 30개 미만 → 수수료 0.8%
음식점수 5개 미만, 주문수 30개 이상 → 수수료 1%
음식점수 5개 미만, 주문수 30개 미만 → 수수로 2%)
연산,,,,? 더하는 거겠지..?음 COUNT인가..암튼 이걸 서브쿼리로 넣어야될 것같은데...
강의 살짝 봄 -> 아 quantity 더하고 restaurant_name은 숫자가 아니니까 count 해줘야겠군.근데 중복으로 세면 안되니까 중복없이=distinct
내가 놓쳤던 부분 _
sum(quantity)
count(distinct restaurant_name)
🔴sum, count 하고 괄호 까먹지 말기 !!!
근데.. 나 맞게 한 것 같은데 왜 자꾸 안되냐...
알았다... 칼럼 여러개 불러올 때는 ,잘 썼는데
함수로 넘어갈 때 ,를 안썼다...
행 갈고 ,쓰는 걸 진짜 습관화 해야겠다
from
(
서브쿼리
) a 도 다시한 번 기억~!
🔻최종 코드
select cuisine_type
,total_quantity
,count_res
,case
when count_res>=5 and total_quantity>=30 then 0.005
when count_res>=5 and total_quantity<30 then 0.008
when count_res<5 and total_quantity>=30 then 0.01
when count_res<5 and total_quantity<30 then 0.02
end rate
from
(
select cuisine_type
,sum(quantity) total_quantity
,count(distinct restaurant_name) count_res
from food_orders
group by 1
) a
SELECT 시도,
total_quantity,
count_res,
CASE
WHEN count_res >= 5 AND total_quantity >= 30 THEN 0.005
WHEN count_res >= 5 AND total_quantity < 30 THEN 0.008
WHEN count_res < 5 AND total_quantity >= 30 THEN 0.01
WHEN count_res < 5 AND total_quantity < 30 THEN 0.02
END rate
FROM
(
SELECT
SUBSTR(addr, 1, 2) "시도", -- 지역 이름을 주소 필드에서 추출
SUM(quantity) total_quantity,
COUNT(DISTINCT restaurant_name) count_res
FROM food_orders
GROUP BY 1
) a
답 맞겠지..?ㅎㅎ..
(할인조건
수량이 5개 이하 → 10%
수량이 15개 초과, 총 주문금액이 300000 이상 → 0.5%
이 외에는 일괄 1%)
전체적으로 쓰고 서브쿼리 오류때문일까봐, 그럼 너무 화가날까봐! 서브쿼리식 이상없나 먼저 돌려봤다
오키 잘 되는군
🔻스스로 쓴 코드
select restaurant_name
,case when total_quantity<=5 then 0.1
when total_quantity>15 and total_price>=30000 then 0.005
else 0.01
end "수수료할인율"
from
(
select restaurant_name
,sum(quantity) total_quantity
,sum(price) total_price
from food_orders
group by 1
) a
가격은 total이 아니라, sum으로 별명짓는게 맞겠다.
그리고 총합가격이랑, 총수량을 같이 볼 수 있게 본 쿼리식 select에서 함께 불러와줘야겠다 !
어제까지만해도 서브쿼리가 너무 생소하고 정답 코드를 봐도 너무 헷갈렸는데,
확실히 실습문제 먼저 부딪혀보고 강의 보고 부족했던 부분 메꾸고 ..이런식으로 시도해보니까 (시간은 좀 걸렸지만) 마침내 마지막 2문제는 혼자 해낼 수 있었다 !
내일 배울 내용도 이렇게 잘 해봐야지 :)
오늘 공부 못한 부분은, 내일 오전시간을 활용해서라도 채워야겠다 ㅠㅠ 나혼자 진도가 늦어지면,, 팀원들의 의욕을 떨어뜨릴 것 같달까,, 같이 으쌰으쌰 했으면 좋겠다😊
내일 아티클 스터디 마치고, 4주차 완강+5주차 진입이 목표!
벌써 수요일이 지났군. 이번주도 마무리 잘해야겠다🔥