개인 공부 복습/SQL 11

[SQL] 프로그래머스 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기

더보기SELECT COUNT(*) AS FISH_COUNT,MAX(LENGTH) AS MAX_LENGTH, FISH_TYPEFROM FISH_INFOGROUP BY FISH_TYPEHAVING AVG(COALESCE(LENGTH, 10)) >= 33ORDER BY FISH_TYPE ASCCOALESCE : NULL 값을 다른 값으로 대체 할 때 사용하며 여러 인수를 평가하여 첫 번째로 NULL이 아닌 값을 반환하는 함수 입니다. (COALESCE(LENGTH, 10)) 같은 경우 LENGTH컬럼에 NULL값을 10으로 대체한다 라는 의미 입니다.

[SQL] 프로그래머스 가격대 별 상품 구하기

더보기SELECT FLOOR(PRICE / 10000) * 10000 AS PRICE_GROUP, COUNT(*) AS PRODUCTSFROM PRODUCTGROUP BY PRICE_GROUPORDER BY PRICE_GROUP ASC; FLOOR 함수FLOOR() 함수는 SQL에서 숫자를 내림하여 소수점 아래를 버리고 가장 가까운 작은 정수로 반환하는 함수입니다. 즉, 실수나 정수가 주어졌을 때 그 값보다 작거나 같은 최대 정수를 반환합니다. 이 함수는 주로 가격대나 그룹화를 할 때 유용하게 사용됩니다.

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

더보기더보기SELECT USER_ID, PRODUCT_IDFROM ONLINE_SALEGROUP BY USER_ID, PRODUCT_IDHAVING COUNT(*) > 1ORDER BY USER_ID ASC, PRODUCT_ID DESC; GROUP BY SQL 데이터를 그룹화하는데 사용됩니다.동일한 값들을 가진 행들을 그룹으로 묶어 통계나 집계 연산을 수행할 때 사용됩니다. GROUP BY  열1 //  그룹을 묶을 기준이 되는 열1 HAVING 절그룹화된 데이터에 대한 조건을 지정할 때 사용됩니다.WHERE과 비슷하지만 차이점은 HAVING GROUP BY가 있어야 사용 가능 하다. 즉 GROUP BY USER_ID, PRODUCT_IDUSER_ID와 PRODUCT_ID의 공통된 값을 묶는다.HAVI..

[SQL] 프로그래머스 자동차 대여기록에서 장기/단기 대여 구분하기

더보기SELECT HISTORY_ID, CAR_ID, DATE_FORMAT(START_DATE, '%Y-%m-%d') AS START_DATE, DATE_FORMAT(END_DATE, '%Y-%m-%d') AS END_DATE, CASE WHEN DATEDIFF(END_DATE, START_DATE) + 1 >= 30 THEN '장기 대여' ELSE '단기 대여' END AS RENT_TYPEFROM CAR_RENTAL_COMPANY_RENTAL_HISTORYWHERE START_DATE BETWEEN '2022-09-01' AND '2022-09-30'ORDER BY HISTORY_ID DESC;기존 테이..

[SQL] 프로그래머스 조건에 맞는 도서 리스트 출력하기

더보기SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATEFROM BOOKWHERE CATEGORY = '인문' AND PUBLISHED_DATE LIKE '2021%'ORDER BY PUBLISHED_DATE ASC;  주의사항 : PUBLISHED_DATE 의 데이트 포맷이 예시와 동일해야 정답처리가 됩니다. 그냥 PUBLISHED_DATE를 사용하면 시간 : 분 : 초 까지 나온다.그래서 DATE_FORMAT 함수를 사용하여 원하는 만큼 출력하게 만듭니다.이떄 DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') 는 2024-09-11 로 나오며DATE_FORMAT(PUBLISHED_DATE, '%y-%..

[SQL] 프로그래머스 12세 이하인 여자 환자 목록 출력하기

더보기SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE') AS TLNOFROM PATIENTWHERE AGE 문제중 전화번호가 없는 경우, NONE으로 출력시켜 달라는 요구가 있다.예시를 보니 NULL이라고 되어있어 글자로 NULL이 저장되어 있는줄 알았는데 테이블을 확인해보니 아예 비어있다.그래서 IFNULL() 함수를 사용하며 IFNULL(TLNO, 'NONE')  : TLNO 컬럼이 만약 비어있다면 'NONE'을 채워라 이렇게 쓰는 함수이다.마지막으로 IFNULL(TLNO, 'NONE') AS TLNO: AS로 컬럼의 이름을 다시 TLNO로 바꿔준다.