목록DB/Programmers SQL (84)
YataNox
문제 DATEDIFF로 비교하면 될 것같지만 시/분/초 단위로 입양일이 더 빠를 땐 구분할 수 없다.TIMESTAMPDIFF로 SECOND 단위로 비교한다.코드SELECT ai.ANIMAL_ID, ai.NAMEFROM ANIMAL_INS ai JOIN ANIMAL_OUTS ao ON ai.ANIMAL_ID = ao.ANIMAL_IDWHERE TIMESTAMPDIFF(SECOND, ao.DATETIME, ai.DATETIME) > 0ORDER BY ai.DATETIME;
문제WHERE절 에 2022년 1월 데이터만 조회하게 걸러내고 카테고리별로 Grouping 하고 SUM함수를 사용하여 수를 집계했다.코드SELECT b.CATEGORY, SUM(bs.SALES) AS TOTAL_SALESFROM BOOK b JOIN BOOK_SALES bs ON b.BOOK_ID = bs.BOOK_IDWHERE DATE_FORMAT(bs.SALES_DATE, '%Y-%m') = '2022-01'GROUP BY CATEGORYORDER BY 1 ASC;
문제 두 테이블의 ID를 기준으로 병합한 뒤 입양 테이블이 NULL인 행 중에 날짜가 가장 오래된 것 3개만 출력한다. 코드WITH temp AS ( SELECT ai.NAME, ai.DATETIME FROM ANIMAL_INS ai LEFT JOIN ANIMAL_OUTS ao on ai.ANIMAL_ID = ao.ANIMAL_ID WHERE ao.DATETIME IS NULL ORDER BY 2 limit 3)SELECT NAME, DATETIMEFROM tempORDER BY 2 ASC;
문제 https://school.programmers.co.kr/learn/courses/30/lessons/299310 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 역시 프로그래머스는 LV이 믿을게 못된다.편차를 구하는게 핵심인 문제이다.1. 날짜에서 년도만 뽑아낸 서브컬럼을 가진 테이블(e)을 만든다.2. 년도별 최고 크기 값의 서브컬럼을 가진 테이블(s)을 만든다.3. 두 테이블을 조인하여 s 테이블의 최고 크기 값 - e테이블의 각 크기를 연산하여 편차값을 구한다.코드WITH YEAR_T AS( SELECT *, YEAR(DIFFERENTIATION_DATE) AS 'YEAR' FR..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/284531 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 호선 별로 그룹화하고 역간의 거리를 기준으로 합치면(sum) 총 누계거리,평균내면(avg) 평균 거리가 나온다. 각각 2,3자리번째의 수에서 반올림 해주고 concat을 이용해서 km단위를 붙여준다. ps. 처음에 order by할 때 2 desc를 했다가 틀렸다. 반올림 처리 되는 값 때문에 원하는 대로 정렬이 안될 수 있으니 반올림한 부분을 제외하고 정렬처리하자코드SELECT ROUTE, CONCAT(ROUND(SUM(D_BETWEE..
문제https://school.programmers.co.kr/learn/courses/30/lessons/164672 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1. 2022년 10월 05일 게시판 정보를 찾을 것 (str_to_date 사용)2. status를 확인하여 판매중, 예약중, 거래완료를 분류할 것. (case문 사용.)코드SELECT BOARD_ID, WRITER_ID, TITLE, PRICE,CASE WHEN STATUS = 'SALE' THEN '판매중' WHEN STATUS = 'RESERVED' THEN '예약중' ELSE '거래완료'END AS STATUSFR..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/131530 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 가격대별로 갯수를 구해야한다. PRICE에서 10000을 나누고 소수점을 버리면 해당 가격대의 앞자리가 나오고 다시 10000을 곱해주면 가격대가 나오게된다. 15600원이라면 15600 -> 1.56 -> 1 -> 10000해당 값을 기준으로 그룹화를 진행하고 출력하면된다.코드SELECT FLOOR(PRICE / 10000) * 10000 AS PRICE_GROUP, COUNT(1) AS PRODUCTSFROM PRODUCTGROUP ..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/59046 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 코드SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKEFROM ANIMAL_INSWHERE NAME IN('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')ORDER BY 1;