📑 1. 문제설명❌ 2. 실패한 코드 PRODUCT_CODE 컬럼이 예를 들면 'A1000011' 이기 때문에SUBSTRING(컬럼명,시작인덱스,끝인덱스)로 앞 두 자리만 떼어 내야 한다. SELECT SUBSTRING(Product_code,1,2) AS CATEGORY, COUNT(SUBSTRING(Product_code,1,2)) AS PRODUCTSFROM PRODUCTGROUP BY SUBSTRING(Product_code,1,2), Product_codeORDER BY Category; 내가 작성한 코드의 실행 결과를 보면 A2 기준으로 GROUP 으로 묶이지 않은 것을 확인 할 수 있다.⭐ 3. 정답코드GROUP BY 절에서 SUBSTRING(Product_code,1,2)로만 묶어야 함P..

My Tech Blog (SQL)
오늘의 명언
📑 1. 문제설명❌ 2. 실패한 시도SELECT CASE WHEN SUBSTRING(DIFFERENTIATION_DATE, 6,7) IN ('01', '02', '03') THEN '1Q' WHEN SUBSTRING(DIFFERENTIATION_DATE, 6,7) IN ('04', '05', '06') THEN '2Q' WHEN SUBSTRING(DIFFERENTIATION_DATE, 6,7) IN ('07', '08', '09') THEN '3Q' WHEN SUBSTRING(DIFFERENTIATION_DATE, 6,7) IN ('10', '11', '12') THEN '4Q' END AS QUARTER, COUNT(..
📑 1. 문제설명❌ 2. 실패한 시도SELECT U.User_id, U.Nickname, CONCAT(U.City,' ', U.Street_address1, ' ', U.Street_address2) AS 전체주소, CONCAT(SUBSTR(TLNO, 1, 3), '-', SUBSTR(TLNO, 4, 4), '-', SUBSTR(TLNO, 8)) AS 전화번호FROM Used_goods_board B JOIN Used_goods_user U ON B.Writer_id = U.User_idHAVING COUNT(BOARD_ID) >= 3ORDER BY U.User_id DESC; - CONCAT 함수는 + 가 아니라 , 를 사용..
📑 1. 문제설명❌ 2. 실패한 시도코드는 작동하지만 정답 처리 X이유: CAR_ID 중복됨SELECT A.Car_idFROM Car_rental_company_car A JOIN Car_rental_company_rental_history B ON A.Car_id = B.Car_idWHERE A.Car_type = '세단' AND B.Start_date BETWEEN '2022-10-01' AND '2022-10-31'ORDER BY A.Car_id DESC;⭐ 3. 정답코드CAR_ID 중복이 없어야 하며 -> DISTINCT대여 기록이 있는 -> ON A.CAR_ID = B.CAR_IDSELECT DISTINCT(A.Car_id)FROM ..

📑 1. 문제설명⭐ 2. 정답코드SELECT Animal_id, name, CASE WHEN Sex_upon_intake LIKE '%Neutered%' OR Sex_upon_intake LIKE '%Spayed%' THEN 'O' ELSE 'X' END AS 중성화FROM ANIMAL_INSORDER BY ANIMAL_ID; 😊 3. TMIANSI SQL 표준에서는 ALIAS 에 작은따옴표를 사용하는 것이 허용되지 않지만 써도 상관은 없다. (나는 따옴표 썼음)SELECT Animal_id, name, CASE WHEN Sex_upon_intake LIKE '%Neutered%' ..

📑 1. 문제설명❌ 실패한 시도이름의 대소문자를 구별하지 않는다는 부분이 문제의 핵심 1차 시도 실패WHERE 절에서 `LOWER(NAME)` 해 주었으나 틀림쿼리는 돌아가고 결과는 나오지만 결국 WHERE절에서 LOWER()과 LIKE를 함께 쓴 것은 불필요한 처리를 하는 것이다. MySQL에서 LIKE 연산자는 기본적으로 대소문자를 구별하지 않는다. SELECT ANIMAL_ID, NAMEFROM ANIMAL_INSWHERE LOWER(ANIMAL_TYPE) = 'dog' AND LOWER(NAME) LIKE '%el%'ORDER BY NAME DESC; 2차 시도 실패이번에는 ORDER BY절에 LOWER() 함수를 써서 정렬했더니 틀렸다고 함.WHERE 절이랑 정렬이랑 별개니까 정렬에는 LOW..

📑 1. 특정 옵션이 포함된 자동차 리스트 구하기 문제CAR_RENTAL_COMPANY_CAR 테이블에서 '네비게이션' 옵션이 포함된 자동차 리스트를 출력하는 SQL문을 작성해주세요. 결과는 자동차 ID를 기준으로 내림차순 정렬해주세요. ⭐ 정답코드SELECT * FROM CAR_RENTAL_COMPANY_CARWHERE OPTIONS LIKE '%네비게이션%'ORDER BY CAR_ID DESC;📑 2. 자동차 대여 기록에서 장기/단기 대여 구분하기 📌 틀린코드SELECT HISTORY_ID, CAR_ID, DATE_FORMAT(START_DATE, '%Y-%m-%d'), DATE_FORMAT(END_DATE, '%Y-%m-%d'), CASE WHEN DATEDIFF(END_DATE..

📑 1. 문제설명💡 2. 접근방식이 문제 핵심은 조건에 따라서 STATUS 라는 컬럼에 다른 결과값을 보여주는 것이다자바에서 조건문으로 IF나 CASE문 쓰는 것처럼 MySQL 에서는 SELECT 절에 CASE 문을 써 줄 수 있다.CASE WHEN 컬럼명 = '조건' THEN '결과값' 해 주면 조건에 따라 다른 결과가 도출된다.그리고 CASE 문을 끝낼 때는 END AS 별칭을 사용한다 만약에 나열한 조건에 해당하지 않는 경우의 기본 값을 주고 싶다면 WHEN 대신 ELSE 절에 기본값을 세팅해 주면 된다. ⭐ 3. 정답코드계속 틀려서 출력은 잘 되는데 왜 틀리나 했더니 MySQL 에서 기본값은 오름차순이었다처음에 내림차순이 기본값이라 생각하고 생략했음ORDER BY BOARD_ID;만 썼더니 계..