sql 8

mysql - 프로그래머스 273712 / 업그레이드 할 수 없는 아이템 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/273712lv3구현 방법item_tree에서 parent_item_id에 등장하지 않은 item_info의 item_id를 출력하면 된다. 방법은 3가지 정도 있다. 1. not in 사용in을 사용할 때 null이 나오는 경우를 고려해야 한다. in에서 null이 나올 때 항상 false로 처리하여 데이터가 나오지 않기 때문이다.2. not exists 사용3. left join 사용코드-- 업그레이드 할 수 없는 아이템 구하기-- https://school.programmers.co.kr/learn/courses/30/lessons/273712-- not in 사용select i.item_i..

sql 2024.12.05

mysql - 프로그래머스 157340 / 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기

https://school.programmers.co.kr/learn/courses/30/lessons/157340lv3구현 방법case when구문을 사용해서 대여중, 대여 가능 구분했습니다.BETWEEN을 사용해서 2022-10-16이 포함되어 있는지 확인했습니다.MAX 이용해서 해당 car id가 한번이라도 대여중인 경우 대여중만 나오도록 했습니다.(사전적으로 '중'이 '가' 보다 큼)코드SELECT CAR_ID, MAX (CASE WHEN '2022-10-16' BETWEEN START_DATE AND END_DATE THEN '대여중' ELSE '대여 가능' END) AS AVAILABILITYFROM CAR_RENTAL_COMPANY_RENTAL_..

sql 2024.10.23

mysql - 프로그래머스 131123 / 즐겨찾기가 가장 많은 식당 정보 출력하기

https://school.programmers.co.kr/learn/courses/30/lessons/131123 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krLV3구현 방법구해야 하는것이 두가지다.첫번째로 음식 종류별 즐겨찾기가 가장 많은 가게 찾기두번째로 즐겨 찾기가 가장 많은 가게의 정보 출력 첫번째는 group by로 해결하면 된다.두번째는 첫번째로 나온 정보인 food_type과 favorites를 바탕으로 두 정보와 일치하는 가게를 찾아서 출력하면 된다.(서브 쿼리, in 사용)코드-- 즐겨찾기가 가장 많은 식당 정보 출력하기-- https://..

sql 2024.10.02

mysql - 프로그래머스 59411 / 오랜 기간 보호한 동물(2)

프로그래머스 59411 / 오랜 기간 보호한 동물(2)LV3구현 방법처음에 timediff로 코드를 작성했습니다.그런데! 틀렸다네요? 혹시나 해서 datediff로 했더니 맞더라구요.근데 이상하잖아요. 아니 datediff보다 오히려 더 정확하게 timediff로 했는데 틀렸다니요.아니 그럼 일수가 같으면 어쩔려고...(물론 현재 문제에선 문제가 되는 부분은 아니였습니다.)왜 안되는지 궁금해서 못참겠더라고요. 그래서 원인을 찾아봤습니다.이유는 다음과 같았는데요.timediff의 경우, 최대 범위가 838:59:59까지더라고요.... 그래서 그 이상 차이는 모두 같은 취급을 해버리니까 틀렸더라고요... 유유아래 이미지는 제가 직접 쿼리문을 통해 확인해본 결과 입니다.또한 stackoverflow에도 관련 ..

sql 2024.09.07

mysql - 프로그래머스 131537 / 오프라인/온라인 판매 데이터 통합하기

mysql - 프로그래머스 131537 / 오프라인/온라인 판매 데이터 통합하기lv4구현 방법두 테이블의 데이터를 한번에 볼 수 있도록 묻는 문제였다. 문제를 보고 한쪽 테이블에는 없는 칼럼이 있는걸 보고 full outer join 사용하면 된다고 생각했다.하지만 mysql은 따로 full outer join 기능을 제공하지 않고 있어 union을 사용하여 풀기로 했다.OFFLINE_SALE에는 user_id 칼럼이 없으므로 이를 null로 줘서 칼럼수를 맞추고 union 하여 풀었다.코드 select DATE_FORMAT(SALES_DATE, "%Y-%m-%d") as SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOU..

sql 2024.09.02

프로그래머스 299310 / 연도별 대장균 크기의 편차 구하기

프로그래머스 299310 / 연도별 대장균 크기의 편차 구하기lv2구현 방법2가지 방법으로 풀었습니다.서브 쿼리,left join 방법over, partition by 방법배운 점윈도우 함수레코드 간의 연산을 처리하기 위한 함수참고 : 집계함수 - 칼럼 단위 연산 처리(그룹화)over : 윈도우 함수를 정의할 때 사용하는 구문, 함수가 적용될 데이터의 범위를 지정partiton by : 특정 컬럼의 값에 따라 그룹으로 나누는 데 사용됩니다.SQL 쿼리의 실행 순서FROM, JOIN: 테이블과 조인을 결합.WHERE: 조건을 만족하는 행을 필터링.GROUP BY: 그룹화.HAVING: 그룹화된 데이터에 조건을 적용.SELECT: 필요한 컬럼을 선택하고 별칭을 적용.ORDER BY: 최종 결과 정렬.LIMI..

sql 2024.08.22

mysql - 프로그래머스 299308 / 분기별 분화된 대장균의 개체 수 구하기

프로그래머스 299308 / 분기별 분화된 대장균의 개체 수 구하기lv2구현 방법ceil을 이용해서 분기를 직접 계산하여 구했다.조건문(case when then else)을 통해 분기를 정해 구했다.quarter 함수를 이용해 분기를 정해 구했다.처음에 2번 방식을 떠올렸지만 코드가 너무 길어져 1번 방식으로 구했습니다.분기 자체를 구하는 내장 함수가 없을까 찾아보니 quarter가 있네요.3번이 가장 간단합니다.코드-- 직접 계산select concat(ceil(month(DIFFERENTIATION_DATE) / 3), 'Q') as 'QUARTER', count(id) as 'ECOLI_COUNT'from ECOLI_DATAgroup by QUARTERorder by ..

sql 2024.08.20

mysql - 프로그래머스 298518 / 특정 물고기를 잡은 총 수 구하기

특정 물고기를 잡은 총 수 구하기LV2구현 방법count, join, in을 이용하여 구현했습니다.join조인 순서를 고려했습니다. 현재 테이블에서 fish_name_info가 fish_info에 비해 작기 때문에 fish_name_info를 먼저 처리 했습니다.inor 이용하여 조건에 만족하는 값을 찾지 않고 in을 이용했습니다.이유는 크게 두가지가 있습니다.인덱스 : 인덱스를 설정한 경우 in을 통해 단일 인덱스 조회가 가능해집니다.간결한 표현코드SELECT COUNT(fi.fish_type) AS "fish_count"FROM fish_name_info fin JOIN fish_info fi ON fi.fish_type = fin.fish_typeWHERE fin..

sql 2024.08.19