문제 연속으로 세번 같은 숫자가 주어지는 경우, 해당 숫자를 출력하는 문제이다. 접근법 총 3가지 방법으로 접근해볼 수 있다 : (1) JOIN - 내가 푼 풀이, (2) 셀프조인, (3) 윈도우 함수 LEAD 사용 (1) 다소 스튜핏한 JOIN 풀이 (처음 푼 풀이) 셀프 조인을 생각하지 못하고 매번 LOGS 테이블을 불러와서 조인해주는 방식인데, 결국 이걸 간단히 구현한게 셀프조인이기 때문에 자연스럽게 셀프 조인 개념을 배우고 나서는 이 방법을 절대 하지 않게 될 것이다.. SELECT DISTINCT LNUM AS ConsecutiveNums FROM (SELECT L.ID AS LID, L.NUM AS LNUM, T.ID AS TID, T.NUM AS TNUM, THR.ID AS THRID, TH..
문제 두개의 Employeement, Department 테이블 존재 각 부서에서 가장 높은 임금을 받는 직원들의 정보만 추출하기 접근법 총 3가지 방식으로 문제를 풀 수 있다: (1) 서브쿼리 절 풀이 (2) 윈도우 함수 MAX (3) 윈도우 함수 DENSE_RANK()다 (1) 서브쿼리 풀이법 SELECT D.NAME AS DEPARTMENT , E.NAME AS EMPLOYEE , E.SALARY AS SALARY FROM EMPLOYEE E INNER JOIN DEPARTMENT D ON E.DEPARTMENTID = D.ID WHERE(E.DEPARTMENTID, E.SALARY) IN (SELECT DEPARTMENTID, MAX(SALARY) FROM EMPLOYEE GROUP BY DEP..
SELECT M.MEMBER_NAME, R.REVIEW_TEXT, DATE_FORMAT(R.REVIEW_DATE,'%Y-%m-%d') as REVIEW_DATE FROM MEMBER_PROFILE M JOIN REST_REVIEW R ON M.MEMBER_ID = R.MEMBER_ID WHERE M.MEMBER_ID IN ( SELECT MEMBER_ID FROM REST_REVIEW GROUP BY MEMBER_ID HAVING COUNT(*) = ( SELECT COUNT(*) AS CNT FROM REST_REVIEW GROUP BY MEMBER_ID ORDER BY CNT DESC LIMIT 1 )) ORDER BY REVIEW_DATE, REVIEW_TEXT; 서브 쿼리를 이중으로 쓰는 게 포인..
WITH TRUCK AS ( SELECT H.HISTORY_ID , C.CAR_TYPE , C.DAILY_FEE , DATEDIFF(H.END_DATE, H.START_DATE) + 1 AS DIFF , CASE WHEN DATEDIFF(H.END_DATE, H.START_DATE) + 1 >= 90 THEN '90일 이상' WHEN DATEDIFF(H.END_DATE, H.START_DATE) + 1 >= 30 THEN '30일 이상' WHEN DATEDIFF(H.END_DATE, H.START_DATE) + 1 >= 7 THEN '7일 이상' ELSE 'NONE' END AS DURATION_TYPE FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY H INNER JOIN CAR_..
SELECT A.APNT_NO , P.PT_NAME , A.PT_NO , A.MCDP_CD , D.DR_NAME , A.APNT_YMD FROM APPOINTMENT A INNER JOIN PATIENT P ON P.PT_NO = A.PT_NO INNER JOIN DOCTOR D ON A.MDDR_ID = D.DR_ID WHERE 1=1 AND DATE_FORMAT(A.APNT_YMD, '%Y%m%d') = 20220413 AND A.MCDP_CD = 'CS' AND A.APNT_CNCL_YN = 'N' ORDER BY A.APNT_YMD https://school.programmers.co.kr/learn/courses/30/lessons/132204
SELECT I.ANIMAL_ID, I.NAME FROM ANIMAL_INS I JOIN ANIMAL_OUTS O ON I.ANIMAL_ID = O.ANIMAL_ID ORDER BY DATEDIFF(O.DATETIME, I.DATETIME) DESC LIMIT 2; POINTS ORDER BY에서도 연산을 통해서 그 결과값을 이용해 정렬해줄 수 있다! https://school.programmers.co.kr/learn/courses/30/lessons/59411
SELECT DISTINCT C.CAR_ID FROM CAR_RENTAL_COMPANY_CAR C JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY H ON C.CAR_ID = H.CAR_ID WHERE CAR_TYPE LIKE '%세단%' AND MONTH(START_DATE) = 10 ORDER BY CAR_ID DESC; https://school.programmers.co.kr/learn/courses/30/lessons/157341
SELECT BOARD_ID , WRITER_ID , TITLE , PRICE , CASE STATUS WHEN 'SALE' THEN '판매중' WHEN 'RESERVED' THEN '예약중' ELSE '거래완료' END AS STATUS FROM USED_GOODS_BOARD WHERE DATE_FORMAT(CREATED_DATE, '%Y%m%d') = 20221005 ORDER BY BOARD_ID DESC; https://school.programmers.co.kr/learn/courses/30/lessons/164672