SQL/문제

SQL/문제

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

문제 풀이SELECT USER_ID, PRODUCT_IDFROM ONLINE_SALEGROUP BY USER_ID, PRODUCT_IDHAVING COUNT(USER_ID) > 1ORDER BY USER_ID, PRODUCT_ID DESC 셀프 조인으로 푼 다른 코드도 있던데, 개인적으로 해당 문제는 having절을 사용하는게 가장 깔끔한 거 같다. 해당 문제는 group by를 하고 조건을 줘서 세어주는 거니까 메인 쿼리에서 해결이 가능하다.having절은 그룹화된 집계 결과에서 조건식을 적용할 때 사용하는데 having을 사용할 때는 대상이 무엇인지를 봐야한다. 이 문제에서 두개 이상이여야하는 게 뭘까? 바로, USER_ID 나 PRODUCT_ID 이다.따라서 having 절에 둘중 하나로 필터를 걸..

SQL/문제

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

문제 풀이SELECT CAR_TYPE, COUNT(CAR_TYPE) AS CARSFROM CAR_RENTAL_COMPANY_CARWHERE (OPTIONS LIKE '%통풍시트%') OR (OPTIONS LIKE '%열선시트%') OR (OPTIONS LIKE '%가죽시트%')GROUP BY CAR_TYPEORDER BY CAR_TYPE SELECT *을 찍어보면 아래와 같이 options 컬럼에 자동차 옵션이 쭉 써져있다.따라서, where(options like '%통풍시트%') or ( options like '%통풍시트%')  or ( options like '%통풍시트%') 로options 안에 통풍시트, 열선시트, 가죽시트가 포함되는 컬럼을 필터링 해줬다. * LIKE : '%a%..

SQL/문제

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

문제 풀이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_INSORDER BY ANIMAL_ID CASE WHENcase when 역시 if-else 처럼 조건을 지정해줄 때 사용해주는 구문이다. CASE WHEN 조건1 THEN 조건1의 결과값           WHEN 조건2 THEN 조건2의 결과값           ELSE 조건이 충족되지 않을 때의 결과값           END  * CASE WHEN 구문은..

SQL/문제

[프로그래머스] 흉부외과 또는 일반외과 의사 목록 출력하기

문제 풀이SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') as HIRE_YMDFROM DOCTORWHERE MCDP_CD IN ('CS' , 'GS')ORDER BY HIRE_YMD DESC, DR_NAME DATE_FORMAT해당 문제에서 알아야할 함수는 DATE_FORMAT 함수이다.항상 느끼는데 문제가 아무리 쉬어도 맨 처음 해야할 건 SELECT * FROM 테이블을 해서 원본 데이터 값이 어떻게 되어있는지 보는 것임!! 해당 데이터로 SELECT * 을 찍어보면 HIRE_YMD가 2011-03-01 00:00:00 이런식으로 되어 있기에 그냥 제출하면 틀림* 여담으로 프로그래머스 데이터는 날짜를 00:00:00 까지 나오게 한..

SQL/문제

[프로그래머스] 경기도 위치한 식품창고 목록 출력하기

문제 풀이SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, IF(FREEZER_YN IS NULL, 'N', FREEZER_YN) AS FREEZER_YNFROM FOOD_WAREHOUSEWHERE WAREHOUSE_NAME LIKE '%경기%'ORDER BY WAREHOUSE_ID IF~ELSE 조건문조건문 지정으로는 CASE WHEN과 IF~ELSE가 있는데 CASE WHEN은 다른 문제에서 나오므로 IF~ELSE만 IF ( 조건문, 참일때 값, 거짓일 때 값) 즉 해당 문제에서는 FREESER가 NULL일때만 N으로 표현해 달라 했으므로 SELECT문에IF(FREEZER_YN IS NULL, 'N', FREEZER_YN)IF (FREEZER_YN IS N..

- MJ -
'SQL/문제' 카테고리의 글 목록 (2 Page)