본문 바로가기

코딩테스트

(50)
SQL 고득점 kit(GROUP BY) - 년, 월, 성별 별 상품 구매 회원 수 구하기 -- 풀이 쿼리 SELECT YEAR(O.SALES_DATE) AS YEAR , MONTH(O.SALES_DATE) AS MONTH , U.GENDER , COUNT(DISTINCT U.USER_ID) AS USERS FROM USER_INFO U JOIN ONLINE_SALE O ON U.USER_ID = O.USER_ID WHERE GENDER IS NOT NULL GROUP BY YEAR, MONTH, GENDER ORDER BY YEAR, MONTH, GENDER - Lv 4 짜리 문제였지만 그다지 어려운 문제는 아니다. 조건만 잘 맞춰주면 된다. - 단, 풀이에서 사용한 YEAR(), MONTH()등의 함수는 MySQL 외에 다른 DBMS에선 안 먹힐 수도 있으니, EXTRACT나 DATE_TR..
SQL 고득점 kit(GROUP BY) - 식품분류별 가장 비싼 식품의 정보 조회하기 # 풀이 쿼리 SELECT CATEGORY , PRICE AS MAX_PRICE , PRODUCT_NAME FROM ( SELECT CATEGORY , PRICE , PRODUCT_NAME , DENSE_RANK() OVER (PARTITION BY CATEGORY ORDER BY PRICE DESC) AS RANKING FROM FOOD_PRODUCT WHERE CATEGORY IN ('과자', '국', '식용유', '김치') ) AS B WHERE RANKING = 1 ORDER BY MAX_PRICE DESC 1. 카테고리 별 금액 기준으로 순서를 매긴 후 2. 1등인 품목들만 가져온다. 그리 어렵진 않았다. 그런 만큼, 서너개의 풀이법이 더 있을 것으로 예상한다.
SQL 고득점 kit(GROUP BY) - 성분으로 구분한 아이스크림 총 주문량 -- 정답 쿼리 SELECT I.INGREDIENT_TYPE , SUM(TOTAL_ORDER) AS TOTAL_ORDER FROM FIRST_HALF F LEFT JOIN ICECREAM_INFO I ON F.FLAVOR = I.FLAVOR GROUP BY I.INGREDIENT_TYPE LEVEL 2 다운 쉬운 문제였다. 해설은 따로 하지 않는다.
SQL 고득점 kit(GROUP BY) - 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 # 풀이 쿼리 SELECT EXTRACT(MONTH FROM START_DATE) AS MONTH , CAR_ID , COUNT(*) AS RECORDS FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE START_DATE BETWEEN '2022-08-01' AND '2022-10-31' GROUP BY MONTH, CAR_ID HAVING CAR_ID IN ( SELECT CAR_ID FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE START_DATE BETWEEN '2022-08-01' AND '2022-10-31' GROUP BY CAR_ID HAVING COUNT(*) >= 5 ) ORDER BY MONTH, CAR_ID DESC; ..
문제풀이 자동으로 Github에 연동하기 Leetcode에서 코딩테스트 문제를 풀 때, 자동으로 문제 풀이를 Github에 연동해주는 Leetsync라는 프로그램을 애용했다. 사실 애용했다기보단 한 번 연동 걸어두고 그냥 문제만 풀었을 뿐이지만... 어쨌든 자동으로 Github에 올려주었으니 굉장히 유용했던 프로그램이었는데.. 이제 Leetcode의 SQL문제는 다 풀어서 프로그래머스로 옮겨오고, 귀찮지만 하나하나 Github에 올려야 하나 말아야 하나고민하던 찰나! Leetsync처럼 Github 자동 연동프로그램을 발견! 바로 설치해주었다. 이 얼마나 편리한가... 이 편리함을 공유하고자 한다. 개발자들께 경의를. Chrome 브라우저에서 실행하도록 하자. 다른 브라우저에서도 가능한지는 잘 모르겠다. 1. Chrome 웹스토어 -> 확장 프..
SQL 고득점 kit(GROUP BY) - 진료과별 총 예약 횟수 출력하기 # 풀이 쿼리 SELECT MCDP_CD AS '진료과코드' , COUNT(APNT_NO) AS '5월예약건수' FROM APPOINTMENT WHERE APNT_YMD BETWEEN '2022-05-01 00:00:00' AND '2022-05-31 23:59:59' GROUP BY MCDP_CD ORDER BY 5월예약건수, 진료과코드; 처음엔 예약 취소여부가 N이라는 조건을 넣었었다. 취소되었으면 그건 예약 한게 아니지 않은가? 그런데 아무리 봐도 틀릴 리가 없는 쿼리인데 계속 틀리더라... 혹시나 싶어서 해당 조건을 빼니 바로 ACCEPT되었다. 문제에서 조건을 좀 더 명확하게 했어야 하는 것이 아닌가... 싶다.
Leetcode SQL Medium 난이도 전부 해결! 지난 1월 10일, Leetocde SQL문제의 Easy난이도(물론 무료분...ㅎ)를 다 격파하고 기념 글을 짧게 포스팅했었다. [오늘은 어땠나요?] - Leetcode SQL Easy난이도 전부 해결! Leetcode SQL Easy난이도 전부 해결! 냉무... 는 좀 심심하니까. 24.01.10 Leetcode의 SQL 문제 중 EASY 난이도를 전부 풀었다. 아 물론 무료버전에서 제공되는 문제들만. 무료버전이어도 문제가 꽤나 많다. 한 50여 문제 정도는 되는 듯. 별 k-wien1589.tistory.com 그리고 본인의 게으름과 이런저런 핑계거리가 합쳐, 근 한달이 지난 오늘 24. 02. 06 Leetcode SQL Medium 난이도도 전부 해결! 물론 무료분이지만 양질의 문제가 꽤 많다. ..
1934. Confirmation Rate Table: Signups +----------------+----------+ | Column Name | Type | +----------------+----------+ | user_id | int | | time_stamp | datetime | +----------------+----------+ user_id is the column of unique values for this table. Each row contains information about the signup time for the user with ID user_id. Table: Confirmations +----------------+----------+ | Column Name | Type | +--------------..