SQL 문제(44)
-
주문량이 많은 아이스크림들 조회하기
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/133027 정답 정답은 맞췄지만 생각보다 시간이 소요된 문제였다. UNION ALL를 통하여 모든 테이블을 합쳐준뒤 합친 테이블에서 FLAVOR 로 그룹화 시켜주고 TOTAL_ORDER를 총 더한 값 순서대로 내림차순 정렬한뒤 상위 3개만 뽑아오는 로직으로 문제를 해결하였다. ORDER BY절에서 값을 더해주면서 정렬을 하면 되는데 자꾸 SELECT 구문에서 더한값을 뽑아오고 해당 컬럼을 숨기는 방식으로 해결할려고 해서 시간이 걸렸다. 다른 분들은 UNION ALL를 쓰지않고 LEFT JOIN를 사용하셨던데 개인적인 생각으로는 만약 오른쪽 테이블에만 존재하는 행중에 두테이블의 값을 합친것보다..
2022.11.21 -
5월 식품들의 총매출 조회하기
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/131117 정답 조건에 맞는 식만 잘 입력하면 되는 문제였다. AMOUNT에 SUM을 안하여 처음에 오류가 나왔는데 같은 물건을 다른날 생산하였을수가 있으므로 SUM함수를 꼭 넣어서 계산을 해야지 정확한 값이 나온다.
2022.11.21 -
상품 별 오프라인 매출 구하기
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/131533 정답 조인을 이용하고 조건만 입력하면 나오는 기본적인 문제였다고 생각한다.
2022.11.21 -
경기도에 위치한 식품창고 목록 출력하기
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/131114 정답 쉬워보였는데 순간 CASE문 사용 방법을 잊어먹어서 CASE문에 대해 찾아보고 풀었다. CASE WHEN에 조건이 들어가고 조건을 만족할때 수행하는 로직이 THEN에 들어간다. ELSE는 WHEN에 만족하지 않는 모든 값들에 대한 처리이다. 그리고 마지막에는 꼭 END로 CASE문의 끝을 알려주어야 한다. 다른 풀이방법을 보니 IF문을 사용하여 풀어도 되긴하는데 CASE문에 대해 익숙하지 않아 연습할겸 풀어보았다.
2022.11.21 -
가격대 별 상품 개수 구하기
출처 : https://stupidprogrammer.tistory.com/manage/newpost/?type=post&returnURL=%2Fmanage%2Fposts%2F 정답 이번 문제는 TRUNCATE의 개념을 알고 있어야 풀수있는 문제였다. 물론 다른 방법도 있겠지만 이렇게 푸는 것이 가장 간편하고 가시성도 좋았다. TRUNCATE는 자리수를 버림하는 함수이다. 음수로 넘어가게 되면 첫자리부터 0으로 만든다.
2022.11.21 -
입양 시각 구하기(2)
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/59413 정답 이번문제는 SET에대한 개념을 알지 못해서 아예 풀지 못하였다. SQL에서 SET은 변수에 특정한 값을 넣어줄 때 사용한다.변수 앞에는 @가 들어가야하고 처음 값을 설정해줄때만 = 를 사용하고 그 이후에는 :=를 이용한다. 위의 코드를 보면 초기에 HOUR변수에 -1를 대입하고 하나씩 더하면서 HOUR 이 22가 될때까지 하나씩 더하가며 문제에서 주어진 23까지의 행을 만들어준다. 그리고 SELECT문에 COUNT를 세는 서브쿼리를 만들어서 문제를 해결하였다. 그리고 신기한것이 저번에 포스팅 한 글에서 SQL 구문의 순서를 다룬적이 있었는데 그때 분명 SELECT문은 FROM,..
2022.11.21