SQL7 노선별 평균 역 사이 거리 조회하기 이번 문제는 다 잘 풀고, 테스트 케이스까지 맞는데 제출만 하면 틀렸다고 나오는다소 답답한 문제였다..문제를 아무리 읽어봐도 이유를 모르겠어서 찾아보게 되었다. 일단 틀린 경우의 코드부터 확인해보자. SELECT ROUTE,CONCAT(ROUND(SUM(D_BETWEEN_DIST), 1), 'km') AS TOTAL_DISTANCE,CONCAT(ROUND(AVG(D_BETWEEN_DIST), 2), 'km') AS AVERAGE_DISTANCEFROM SUBWAY_DISTANCEGROUP BY ROUTEORDER BY TOTAL_DISTANCE DESC; 이 경우의 문제점이 ORDER BY에서 정렬을 해줄 때, TOTAL_DISTANCE가ROUND(SUM(D_BETWEEN_DIST), 1)과 'km'가 .. 2024. 10. 23. 자동차 평균 대여 기간 구하기 ( 프로그래머스, Lv.2, MySQL ) 이번 문제는 프로그래머스의 Lv2문제인 자동차 평균 대여 기간 구하기이다.이번 문제에서 내가 막힌 부분은 바로날짜 간의 차이를 구하는 법!!!처음에 작성했던 코드를 확인해 보자! SELECT CAR_ID, ROUND(AVG(END_DATE - START_DATE + 1), 1) AS AVERAGE_DURATIONFROM CAR_RENTAL_COMPANY_RENTAL_HISTORYGROUP BY CAR_IDHAVING AVERAGE_DURATION >= 7ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC; 그냥 END_DATE에서 START_DATE를 빼주면 그 차이가 계산될 거라 생각했다.하지만 다른 결괏값이 나왔고, 이를 해결하기 위해서는 DATEDIFF 함수가 필요했다... 2024. 10. 17. 연도 별 평균 미세먼지 농도 조회하기 좌로 보나 우로보나,, 조회값도 똑같은데 틀렸다고만 나와 답답해서 검색을 했다..그 결과 늘 주어지는 칼럼의 타입이 DATETIME이었어서DATE_FORMAT () 함수를 통해 날짜를 알아왔었는데이번 문제는 DATE이기 때문에 SELECT 할 때, DATE_FORMAT() 함수가 아닌YEAR() 함수를 사용했어야 했다.. 틀린 코드를 먼저 보자. SELECT DATE_FORMAT(YM, '%Y') AS YEAR, ROUND(AVG(PM_VAL1), 3) AS 'PM10', ROUND(AVG(PM_VAL2), 3) AS 'PM2.5'FROM AIR_POLLUTIONWHERE LOCATION2 = '수원'GROUP BY YEARORDER BY YEAR; DATE_FORMAT() 함수는 해당 부분을 문자열로 .. 2024. 10. 10. 특정 단위별 컬럼 그룹화 하기 이번 문제는 "가격대 별 상품 개수 구하기" 이다.문제를 읽고 어..? 내가아는 CASE 방법으로는 지정된, 즉 정적으로밖에 정해주지 못하는데동적으로 어떤 가격이라도 1만원 단위로 나눠서 조회하는건 어떡하지? 이에 검색을 해본 결과 처음보는 방법을 만났다..! 코드로 답을 먼저 확인해보자.SELECT FLOOR(PRICE / 10000) * 10000 AS PRICE_GROUP, COUNT(*) AS PRODUCTSFROM PRODUCTGROUP BY PRICE_GROUPORDER BY PRICE_GROUP;모든 가격을 FLOOR함수를 통해 / 10000 하여 몇만원인지만 남기고 다시 1만을 곱해1만 단위로 그룹화를 시켜준다. 그리고 COUNT함수로 PRODUCTS의 개수를 세어주면 끝! 2024. 10. 10. ORDER BY 컬럼 우선순위 설정 이번 문제는"고양이와 개는 몇 마리 있을까" 이다. 이 문제는 처음부터 맞긴했다.코드는 다음과 같다.SELECT ANIMAL_TYPE, COUNT(*) AS countFROM ANIMAL_INSGROUP BY ANIMAL_TYPEORDER BY ANIMAL_TYPE; CAT 이랑 DOG만 있지 않았다면..? 이 코드만으로 항상 정답일 것 같지 않았다.찾아본 결과 다음과 같은 방법으로 이 문제를 해결할 수 있었다. SELECT ANIMAL_TYPE, COUNT(*) AS countFROM ANIMAL_INSGROUP BY ANIMAL_TYPEORDER BY CASE WHEN ANIMAL_TYPE = 'CAT' THEN 1 WHEN ANIMAL_TYPE = 'DOG' THEN.. 2024. 10. 10. ORDER BY의 alias가 문자열 일 때 ( MySQL ) 프로그래머스의"진료과별 총 예약 횟수 출력하기"를풀이하던 도중 아무리 봐도 맞은것 같은데 틀렸다는 결과를 받아 검색을 시작했다.. 일단 틀린 코드를 보자.SELECT MCDP_CD AS "진료과코드", COUNT(*) AS "5월예약건수"FROM APPOINTMENTWHERE DATE_FORMAT(APNT_YMD, '%Y-%m') = '2022-05'GROUP BY MCDP_CDORDER BY "5월예약건수", "진료과코드" 문제에서 요구하는 조건들을 모두 작성한 것 같은데 계속 틀렸었다..그 이유는? MySQL에서는 큰따옴표(")를 지원하지 않는다고 한다..해결방법은 간단했다. 큰따옴표(") 자리에 백틱(`, 탭버튼 위, 1버튼 왼쪽에 있는 친구다)를 넣어주면 되는것 ! 정답 코드를 확인해보자.SELE.. 2024. 10. 10. GROUP BY 컬럼의 특정 자리로 하기 프로그래머스 SQL문제 중"카테고리 별 상품 개수 구하기"를풀이하는 도중 다음과 같은 문제에 직면하였다. 어..? 특정 컬럼으로 GROUP BY 묶어줄 순 있지만 해당 컬럼의"앞 2자리"로만 ,,? 어떡하지? 방법은 다음과 같다.SELECT LEFT(PRODUCT_CODE, 2) AS CATEGORY, COUNT(*)FROM PRODUCTGROUP BY CATEGORY; LEFT 함수를 통해 PRODUCT_CODE의 앞 2자리만 뽑아주고 CATEGORY라고 명명해준다.그리고 이를 토대로 GROUP BY 해주면 끝! 끝에서 몇 자리는 RIGHT함수를 사용하면 될것같다 ! 2024. 10. 10. 이전 1 다음