SQL 49

[프로그래머스] [SQL] 루시와 엘라 찾기

왠지 고난이 많았던 오늘 문제 우선 아이디별로 정렬하라는게 문제 밑에 예시쪽에 있어서 못봤다 LIKE를 쓰니 제대로 안되는거 같아 서치 시작 REGEXP를 찾았다 제대로 넣었는데도 자꾸 오답으로 나오기 시작 질문하기를 들어가서 코드는 안보고 제목만 보며 힌트를 얻었다 IN으로 해결 → 하지만 REGEXP를 썼을 때와 결과 테이블은 똑같은데 왜? 라는 의문 REGEXP는 좀더 섬세하기 때문에 제대로 시작과 끝을 지정해주지 않으면 문자열이 들어간 모든 것을 가져온다는 것을 늦게 알았다 결과적으로 답은 두가지인데 1. REGEXP를 사용한 쿼리 SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE FROM ANIMAL_INS WHERE NAME REGEXP '^(Lucy|Ella|Pickle..

코딩테스트 2024.01.11

[프로그래머스] [SQL] 카테고리 별 상품 개수 구하기

오만년 만에 돌아온 SQL 풀기 중간에 방황의 시간을 거쳐 내린 결론은 내 눈앞에 있는 할 수 있는 걸 하자 길은 하나만 준비할게 아니라 2안, 3안이 있어야 한다 그런 의미에서 SQL풀기 다시 재개 + 올해 첫 SQLD도 도전해볼 생각이다 간만에 들어오니 새롭고 낯설긴 한데 그래도 해왔던 짬이 있으니 어렵지 않게 해결 유일한 문제가 앞 2글자를 뽑아내는 거였는데 이건 다른 사람 블로그 보고 해결(참고에 적어 놓음) 그래도 틀렸는데 가만히 보니 앞 두글자를 뽑아낸걸로 GROUP BY를 안해서였다! SELECT LEFT(PRODUCT_CODE, 2) as CATEGORY, count(PRODUCT_ID) as PRODUCTS FROM PRODUCT GROUP BY CATEGORY ORDER BY PRODU..

코딩테스트 2024.01.09

[프로그래머스] [SQL] 재구매가 일어난 상품과 회원 리스트 구하기

알바를 시작하다보니 문제 풀기가 쉽지 않다 그래도 최대한 하려고 노력 중 우선 이게 기존에 작성해놓고 통과못한 코드 HAVING을 제대로 알기 전이라 WHERE 절에 연산 꾸겨넣기 -- 틀린코드 SELECT USER_ID, PRODUCT_ID FROM ONLINE_SALE WHERE count(USER_ID) >= 2 GROUP BY PRODUCT_ID ORDER BY USER_ID ASC, PRODUCT_ID DESC; 오늘 다시 보니 이상한게 보임 WHERE절 삭제하고 HAVING으로 대체 그래도 통과안됨 왜냐면 GROUP BY를 PRODUCT_ID로만 했기 때문 동일한 회원이 동일한 상품을 재구매 → 이 말에 따라 GROUP BY에 USER_ID 추가 통과했다 SELECT USER_ID, PRODU..

코딩테스트 2023.12.18

[프로그래머스] [SQL] 취소되지 않은 진료 예약 조회하기

바로 못풀고 방치해놨다가 오늘 마무리! 분명 전 포스팅에서는 테이블을 딱히 줄여부르지 않을 거라고 했지만 세개쯤 되니 복잡해서 그냥 줄였다 ㅋㅋㅋㅋ TABLE 3개 조인하는건 처음이고 전에 코테에서 나왔을 때도 못풀었었는데 이번에 좀 찾아보면서 어려운게 아니라는 걸 알았다 다만 3개 join하는 거에서 (inner) join 이 자주 나와서 개념이 헷갈려서 다시 찾아봄 참고 블로그(하단에 기재)에서 가져왔다 내가 자주 쓰는 JOIN = INNER JOIN JOIN 헷갈린 거랑 별개로 다 잘 작성했는데 테이블 내용이 안나와서 하다가 잠깐 접었다 왜 안나오는지 예시 테이블 뜯어보니까 APPOINTMENT 테이블에 APNT_YMD가 타임스탬프였음!!!!! WHERE A.APNT_YMD = '2022-04-13..

코딩테스트 2023.12.13

[프로그래머스] [SQL] 5월 식품들의 총매출 조회하기

오늘도 평화로운 주인장의 SQL 풀기 나머지는 있는대로 넣으면 돼서 안힘들었는데 총합에서 조금 애먹었다 우선 PRODUCT_ID별로 안나누면 같은 PRODUCT_ID 라도 따로 집계돼서 GROUP BY 사용 SELECT절에서 가격이랑 양 곱한거 합했다 이러면 총합은 완료 하지만 여전히 오답이었다 예시를 잘 보니 만들어진게 안나가는 경우도 있어서 FOOD_PRODUCT에 left join하게 만들었다 그랬더니 통과됨! SELECT FOOD_PRODUCT.PRODUCT_ID, FOOD_PRODUCT.PRODUCT_NAME, sum(FOOD_PRODUCT.PRICE*FOOD_ORDER.AMOUNT) as "TOTAL_SALES" FROM FOOD_PRODUCT LEFT JOIN FOOD_ORDER ON FOO..

코딩테스트 2023.12.06

[프로그래머스] [SQL] 조건에 맞는 사용자와 총 거래금액 조회하기

JOIN이 어색했을 시절 풀다가 포기한 문제 우선 이렇게 풀었다 WHERE절에서 오류가 나서 서브쿼리로 처리함 근데 너무 비효율적인거 같아서 뤼튼에게 물어보고 다른 방법을 찾았다 SELECT WRITER_ID, NICKNAME, TOTAL_SALES FROM (SELECT USED_GOODS_BOARD.WRITER_ID, USED_GOODS_USER.NICKNAME, sum(USED_GOODS_BOARD.PRICE) as "TOTAL_SALES" FROM USED_GOODS_BOARD JOIN USED_GOODS_USER ON USED_GOODS_BOARD.WRITER_ID = USED_GOODS_USER.USER_ID WHERE USED_GOODS_BOARD.STATUS = "DONE" GROUP BY..

코딩테스트 2023.12.04

[프로그래머스] [SQL] 카테고리 별 도서 판매량 집계하기

오랜만에 컴백 테이블 2개 조인하고~ 2022-01 들어가는거 조건으로 걸고 카테고리로 그룹 묶고 카테고리 오름차순 으로 ORDER BY 해주고(굳이 ASC 안적었음) SELECT 에 카테고리랑 SALES 합계 넣어주면 짠 완성~! 참 쉽죠? SELECT CATEGORY, sum(SALES) as 'TOTAL SALES' FROM BOOK JOIN BOOK_SALES ON BOOK.BOOK_ID = BOOK_SALES.BOOK_ID WHERE SALES_DATE LIKE '2022-01%' GROUP BY CATEGORY ORDER BY CATEGORY; 출처 : 프로그래머스

코딩테스트 2023.12.02

[프로그래머스] [SQL] 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기

다 풀어놓고 WHERE 절에서 "%시트" ← 이렇게 작성하고 오답이라고 해서 괴로워하고 있었다 앞에만 % 이거 넣으면 뒤로는 아무것도 안들어가야해서 겉으로 보면 잘 나온거 같아 보이지만 제대로 안나온 것 앞뒤로 넣어야지 중간에 있어도 잘 뽑아내준다 SELECT CAR_TYPE, count(CAR_TYPE) "CARS" FROM CAR_RENTAL_COMPANY_CAR WHERE OPTIONS LIKE "%시트%" GROUP BY CAR_TYPE ORDER BY CAR_TYPE ASC; 출처 : 프로그래머스

코딩테스트 2023.11.27

[프로그래머스] [SQL] 중성화 여부 파악하기

이젠 테이블 하나있는건 너무 고맙다 보자마자 case when 이 떠올랐다 근데 다른글자 라도 의미만 같으면 똑같이 O를 표시하는데 or로 될까 싶어서 넣어봤더니 안되네 따로 해야하는건가 찾아봐도 모르겠다 알게되면 추가해야지 SELECT ANIMAL_ID, NAME, CASE WHEN SEX_UPON_INTAKE LIKE 'Neutered%' THEN 'O' WHEN SEX_UPON_INTAKE LIKE 'Spayed%' THEN 'O' ELSE 'X' END AS '중성화' FROM ANIMAL_INS +) 된다 컬럼을 두번 적으면 되는데 난 또 한번만 적어가지고 안되는 거였음! 어떤거는 컬럼명을 한번만 적어도 되고 어떤거는 따로 적어야하는게 헷갈린다 CASE WHEN에서는 두 번 ! SELECT AN..

코딩테스트 2023.11.24