SQL 30

[프로그래머스] 성분으로 구분한 아이스크림 총 주문량

https://school.programmers.co.kr/learn/courses/30/lessons/133026 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr SELECT a.INGREDIENT_TYPE, SUM(b.TOTAL_ORDER) as TOTAL_ORDER FROM ICECREAM_INFO as a JOIN FIRST_HALF as b ON a.FLAVOR = b.FLAVOR GROUP BY a.INGREDIENT_TYPE ORDER BY TOTAL_ORDER asc; 가장 먼저 JOIN을 떠올렸지만 공통 컬럼이 FLAVOR이라 다른 경우를 ..

Language/SQL 2022.12.14

[프로그래머스] 즐겨찾기가 가장 많은 식당 정보 출력하기

https://school.programmers.co.kr/learn/courses/30/lessons/131123 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES FROM REST_INFO WHERE (FOOD_TYPE, FAVORITES) IN ( SELECT FOOD_TYPE, MAX(FAVORITES) FROM REST_INFO GROUP BY FOOD_TYPE ) ORDER BY FOOD_TYPE desc; 처음에는 where절에 favorites만 in으로 찾아..

Language/SQL 2022.12.08

[프로그래머스] 진료과별 총 예약 횟수 출력하기

https://school.programmers.co.kr/learn/courses/30/lessons/132202 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr SELECT MCDP_CD AS '진료과코드', COUNT(*) AS '5월예약건수' FROM APPOINTMENT WHERE APNT_YMD LIKE '2022-05%' GROUP BY MCDP_CD ORDER BY COUNT(*), MCDP_CD ASC; 5월 예약인 경우만 고려해야한다. LIKE 연산자를 이용해 5월인 경우를 찾아주었다. SQL문을 작성 할 때, select 컬럼명 From..

Language/SQL 2022.12.08

[프로그래머스] 식품분류별 가장 비싼 식품의 정보 조회하기

https://school.programmers.co.kr/learn/courses/30/lessons/131116 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr -- 코드를 입력하세요 SELECT CATEGORY, PRICE as MAX_PRICE, PRODUCT_NAME FROM FOOD_PRODUCT WHERE PRICE IN (SELECT max(PRICE) FROM FOOD_PRODUCT GROUP BY CATEGORY ) AND CATEGORY IN ('과자', '국', '김치', '식용유') ORDER BY MAX_PRICE desc; 처음에..

Language/SQL 2022.12.08

[프로그래머스] 오랜 기간 보호한 동물(2)

SELECT A.ANIMAL_ID, A.NAME FROM ANIMAL_INS A inner join ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID ORDER BY B.DATETIME - A.DATETIME desc limit 2; (입양일 - 보호시작일)이 가장 큰 값이 보호소에서 가장 오랜 기간 보호된 동물이다. DATETIME 끼리 연산을 할 수 있어서 정렬을 - 연산을 이용하여 해주었다. 다른 방법으로, DATEDIFF 함수를 사용하여 계산해 줄 수 있다. DATEDIFF(날짜1,날짜2) = 날짜1 - 날짜2 [실행결과]

Language/SQL 2022.07.13

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

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_INS ORDER BY ANIMAL_ID; CASE 문 첫번재 조건이 충족되면 값을 반환한다. 조건이 True면 읽기를 중지하고 결과를 반환하고 조건이 False면 ELSE 절의 값을 반환한다. ELSE절이 없고 조건이 False면 NULL을 반환한다. WHEN과 THEN은 한쌍이어야 하며, 다수가 존재할 수 있다. [실행결과]

Language/SQL 2022.07.05

[프로그래머스] 이름에 el이 들어가는 동물 찾기

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE ANIMAL_TYPE = 'Dog' and NAME LIKE '%EL%' ORDER BY NAME; WHERE절에 LIKE를 이용하여 EL이 어느 위치에서든 포함되면 조회되도록 했다. 이때, '개' 라고 언급되어 있으니 ANIMAL_TYPE 조건도 걸어주어야 한다. 대소문자 구분하지 않는다고 하여 (NAME LIKE '%el%' OR NAME LIKE '%EL%') 이라 작성했었는데 그럴 필요가 없었다...!

Language/SQL 2022.07.05

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

SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE FROM ANIMAL_INS WHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty') ORDER BY ANIMAL_ID; IN 조건 WHERE절에서 여러 값을 OR 관계로 묶어 나열할 때 사용할 수 있다. 조건의 범위를 지정할 때 사용한다. 컴마(,)로 구분하여 괄호 내에 묶으며, 이 값 중 하나 이상과 일치하면 True로 판단된다. IN 연산자 안에 서브쿼리를 넣을 수 있다. [실행결과]

Language/SQL 2022.07.05

[프로그래머스] 보호소에서 중성화한 동물

SELECT A.ANIMAL_ID, A.ANIMAL_TYPE, A.NAME FROM ANIMAL_INS A INNER JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID WHERE A.SEX_UPON_INTAKE LIKE 'Intact%' and (B.SEX_UPON_OUTCOME LIKE 'Neutered%' OR B.SEX_UPON_OUTCOME LIKE 'Spayed%') ORDER BY A.ANIMAL_ID; 보호소에 들어올 당시에는 중성화 되지 않았지만 보호소를 나갈 때 중성화된 동물을 조회하는 문제다. ANIMAL_INS의 SEX_UPON_INTAKE, ANIMAL_OUTS의 SEX_UPON_OUTCOME 값을 확인하면 된다. Intact ~, Spayed~,..

Language/SQL 2022.07.05