목록algorithm/SQL (17)
on my way

내가 처음 푼 코드SELECT COUNT(*) AS FISH_COUNT, MAX(LENGTH) AS MAX_LENGTH, FISH_TYPEFROM FISH_INFOWHERE FISH_TYPE IN (SELECT FISH_TYPEFROM (SELECT FISH_TYPE, CASE WHEN ISNULL(LENGTH) THEN 10 ELSE LENGTH END AS LENGTHFROM FISH_INFO) AS TGROUP BY FISH_TYPEHAVING AVG(LENGTH) >= 33)GROUP BY FISH_TYPEORDER BY FISH_TYPE평가정확성 (5점 만점 중 3.5점)주어진 문제를 해결하는 데 있어서 기본적인 로직은 잘 잡았고, COUNT, MAX, GROUP BY 등의 함수도 올바르게 사용..

문제 설명이 문제는 REST_INFO 테이블에서 음식 종류별로 즐겨찾기 수가 가장 많은 식당의 정보를 조회하는 것이다.결과는 음식 종류를 기준으로 내림차순 정렬되어야 한다.문제 풀이내가 틀린 코드SELECT *FROM (SELECT FOOD_TYPE, REST_ID, REST_NAME, MAX(FAVORITES) AS FAVORITESFROM REST_INFOGROUP BY FOOD_TYPE ) RORDER BY FOOD_TYPE DESC이 코드가 틀린 이유는 GROUP BY 절에서 FOOD_TYPE만 그룹화 했기 때문에 REST_ID와 REST_NAME의 값이 정확히 어떤 값인지 알 수 없기 때문이다.MAX(FAVORITES)는 FOOD_TYPE 그룹 내에서 가장 큰 즐겨찾기 수를 의미하지만, 그 값이..

처음에 문제를 잘 이해하지 못했다.요약하자면 부모의 희귀도가 'RARE'인 자식 아이템을 출력하는 것이다. 문제 이해주어진 문제는 게임에서 사용되는 아이템들이 업그레이드 가능한지 확인하고, 희귀도가 'RARE'인 아이템들의 다음 업그레이드 아이템을 찾아야 했다.아이템 간의 업그레이드 관계가 주어졌고, 업그레이드 가능한 아이템들을 찾아야 했다.테이블 구조ITEM_INFO 테이블은 각 아이템의 정보를 담고 있었다. 이 테이블에는 ITEM_ID, ITEM_NAME, RARITY, PRICE 컬럼이 있었다.ITEM_TREE 테이블은 아이템 간의 업그레이드 관계를 나타내고 있었다. 이 테이블에는 ITEM_ID와 PARENT_ITEM_ID 컬럼이 있었다.요구사항 분석희귀도가 'RARE'인 아이템들의 다음 업그레이드..

처음에 틀렸던 코드:SELECT ID, EMAIL, FIRST_NAME, LAST_NAMEFROM DEVELOPERSWHERE (BIN(SKILL_CODE) LIKE '%1__________') OR (BIN(SKILL_CODE) LIKE '%1________')ORDER BY ID;처음에는 SKILLCODES 테이블에서 PYTHON, C#의 BIN을 확인한 후 수제로 비교해서 출력하게 끔 했다.예시 코드는 통과했지만 채점에서 에러가 떴다. 틀린 코드가 잘못된 이유:BIN 함수 사용의 비효율성: BIN(SKILL_CODE)는 SKILL_CODE를 2진수 문자열로 변환했다. 이는 문자열 비교로 조건을 처리하게 되었는데, 이는 비효율적일 뿐만 아니라 정확하게 원하는 결과를 얻기 어렵다.정확한 매칭 조건의 부..

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 ROUND(SUM(D_BETWEEN_DIST),1) DESC처음에 ORDER BY에서 그대로 TOTAL_DISTANCE를 사용해서 정답에서 틀림.(정렬은 CONCAT 이전의 수로만 비교되어야 하기 때문) 또한 처음에 SQL에서 CONCAT 사용법도 잊어버렸어서, 이런 유형도 익혀둘 것.

처음 푼 코드SELECT ORDER_ID, PRODUCT_ID, DATE_FORMAT(OUT_DATE,'%Y-%m-%d') AS OUT_DATE, CASE WHEN DATEDIFF(OUT_DATE,'2022-05-01') 0 THEN '출고대기' ELSE '출고미정' END AS 출고여부FROM FOOD_ORDERORDER BY ORDER_IDDATEDIFF 함수로 날짜를 비교함. NULL을 뒤에 처리함 개선 코드SELECT ORDER_ID, PRODUCT_ID, DATE_FORMAT(OUT_DATE,'%Y-%m-%d') AS OUT_DATE, CASE WHEN OUT_DATE IS NULL THEN '출고미정' WHEN OUT_..