일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 2단계
- Join
- level2
- 파이썬 #프로그래머스 #코딩테스트
- 해시
- 행렬곱셈
- 코테
- 프로그래머스
- SQL
- SQL #프로그래머스 #MAX #MIN
- 파이썬
- h-index
- 기초
- H-인덱스
- 재귀
- 파이선
- 골든래빗
- 방문길이
- SQL #프로그래머스 #SELECT
- groupby
- 카카오코테
- Python
- SQL #프로그래머스 #조건절 #ISNULL
- 스택
- 공식문서
- 고득점키트
- 분할정복
- 코딩테스트
- 고득점kit
- SQL고득점키트
- Today
- Total
영아일지
[프로그래머스] SQL 고득점 키트 - SELECT 본문
SELECT문 모음
동물의 아이디와 이름
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS
어린 동물 찾기
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS
WHERE INTAKE_CONDITION != "Aged"
ORDER BY ANIMAL_ID
아픈 동물 찾기
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS
WHERE INTAKE_CONDITION = "SICK"
ORDER BY ANIMAL_ID
역순정렬하기
SELECT NAME,DATETIME FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC
상위 N개 레코드
SELECT NAME FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1
여러 기준으로 정렬하기
SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS
ORDER BY NAME, DATETIME DESC
이름순으로 먼저정렬 > 나중에 시작한 동물 (DESC)
모든 레코드 조회하기
SELECT * from ANIMAL_INS
ORDER BY ANIMAL_ID
강원도에 위치한 생산공장 목록 출력하기
SELECT FACTORY_ID, FACTORY_NAME, ADDRESS FROM FOOD_FACTORY
WHERE ADDRESS LIKE '%강원도%'
SELECT 필드명1, 필드명2 FROM 테이블명
WHERE 변수명 LIKT %조건%
: 변수명이 조건을 만족하는 필드를 추출하기
(LIKE: 비슷한)
조건에 맞는 회원수 구하기
SELECT COUNT(*) AS USER FROM USER_INFO
WHERE (YEAR(JOINED) = 2021) AND (AGE BETWEEN 20 AND 29)
YEAR(변수) : 연만
MONTH(변수) : 달만
BETWEEN 숫자 AND 숫자
조건에 맞는 도서 리스트 출력하기
SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, "%Y-%m-%d") AS PUBLISHED_DATE
FROM BOOK
WHERE CATEGORY LIKE "인문" AND YEAR(PUBLISHED_DATE) = 2021
ORDER BY PUBLISHED_DATE ASC
과일로 만든 아이스크림 구하기
SELECT a.FLAVOR
FROM FIRST_HALF AS a LEFT JOIN ICECREAM_INFO AS b
ON a.FLAVOR = b.FLAVOR
WHERE a.TOTAL_ORDER > 3000 AND b.INGREDIENT_TYPE LIKE "fruit_based"
ORDER BY a.TOTAL_ORDER DESC
**OUTER JOIN(OUTER 생략가능)
- LEFT JOIN : 왼쪽 테이블 기준으로 키값 같은 것 가져오기
- FROM (LEFT TABLE ) AS A LEFT JOIN (RIGHT TABLE) AS B ON (A.COLUMN) = (B. COLUMN)
- RIGHT JOIN : 오른쪽 테이블 기준으로 키값 같은 것 가져오기
- FROM (LEFT TABLE ) AS A RIGHT JOIN (RIGHT TABLE) AS B ON (A.COLUMN) = (B. COLUMN)
- FULL OUTER JOIN: 두 테이블의 합
- FROM (LEFT TABLE ) AS A FULL OUTER JOIN (RIGHT TABLE) AS B ON (A.COLUMN) = (B. COLUMN)
** INNER JOIN : 완전히 일치하는 것들만 (두 테이블의 곱)
- INNER JOIN
- FROM (LEFT TABLE ) AS A INNER JOIN (RIGHT TABLE) AS B ON (A.COLUMN) = (B. COLUMN)
--> 나머지는 조인 포스팅에 더 자세히.
재구매가 일어난 상품과 회원 리스트 구하기
SELECT USER_ID, PRODUCT_ID FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(ONLINE_SALE_ID) > 1
ORDER BY USER_ID ASC, PRODUCT_ID DESC;
**GROUP BY ~ HAVING (조건)
* WHERE VS HAVING
: WHERE는 그룹화 하기 전, HAVING은 그룹화 후 조건
서울에 위치한 식당 목록 출력하기
SELECT A.REST_ID, A.REST_NAME, A.FOOD_TYPE, A.FAVORITES, A.ADDRESS,
round(AVG(B.REVIEW_SCORE),2) AS SCORE
FROM REST_INFO A JOIN REST_REVIEW B
ON A.REST_ID = B.REST_ID
WHERE A.ADDRESS LIKE '서울%'
GROUP BY A.REST_ID
ORDER BY SCORE DESC, A.FAVORITES DESC
** ROUND 함수 : 반올림
ROUND(데이터, 나타낼 소수점 개수)
ex) rount(데이터, 2) : 소수점 셋째자리에서 반올림
평균 일일 대여 요금 구하기
SELECT ROUND(AVG(DAILY_FEE)) AS AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE LIKE "%SUV%"
조건에 부합하는 중고거래 댓글 조회하기
SELECT A.TITLE, A.BOARD_ID, B.REPLY_ID, B.WRITER_ID, B.CONTENTS, DATE_FORMAT(B.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE
FROM USED_GOODS_BOARD A
INNER JOIN USED_GOODS_REPLY B
ON A.BOARD_ID = B.BOARD_ID
WHERE YEAR(A.CREATED_DATE) = 2022 AND MONTH(A.CREATED_DATE)=10
ORDER BY CREATED_DATE, TITLE
A, B 꼼꼼히 보자.
오프라인/온라인 판매 데이터 통합하기 ** (다시풀기)
급어려워짐
![](https://t1.daumcdn.net/keditor/emoticon/face/large/006.png)
SELECT DATE_FORMAT(SALES_DATE, "%Y-%m-%d") AS SALES_DATE,
PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE
WHERE YEAR(SALES_DATE) = 2022 AND MONTH(SALES_DATE) = 3
UNION ALL
(SELECT DATE_FORMAT(SALES_DATE, "%Y-%m-%d") AS SALES_DATE,
PRODUCT_ID, NULL, SALES_AMOUNT
FROM OFFLINE_SALE
WHERE YEAR(SALES_DATE) = 2022 AND MONTH(SALES_DATE) = 3)
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID
**UNION ALL
1) JOIN : 옆으로 연결
2) UNION : 아래로 연결 ( 연결하고자 하는 Column의 개수와 타입이 같아야 연결할 수 있.)
- Union : 중복 데이터 값 삭제하고 연결
- Union All : 중복되는 값 모두 연결
- 사용법 : SELECT (칼럼) FROM (테이블) UNION SELECT (칼럼) FROM
SELECT * FROM Table1 UNION SELECT * FROM Table2
(출처 : https://jaegeun.tistory.com/54)
즐겨찾기가 가장 많은 식당 정보 출력하기 ** 다시풀어보기
SELECT A.FOOD_TYPE, REST_ID, REST_NAME, A.FAVORITES
FROM REST_INFO A JOIN (SELECT FOOD_TYPE, MAX(FAVORITES) AS FAVORITES
FROM REST_INFO
GROUP BY FOOD_TYPE
) AS B
ON A.FOOD_TYPE = B.FOOD_TYPE AND A.FAVORITES = B.FAVORITES
ORDER BY FOOD_TYPE DESC
**서브 쿼리 : 테이블을 하나 더 만들기
테이블 정의해주고 JOIN 하면 된다!
**주의 할 점 키를 두개 동시에 충족시키도록 해야함! , FAVORITES는 A!
'디지털 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] SQL고득점키트 - GROUP BY (0) | 2022.11.06 |
---|---|
[프로그래머스 Lv0] 최빈값 구하기 (0) | 2022.10.27 |
[프로그래머스] SQL - ISNULL 모음 (0) | 2022.10.14 |
[프로그래머스]-SQL MAX, MIN 모음 (0) | 2022.10.14 |
프로그래머스 - Level0 파이썬 함수 정리 (1) | 2022.09.30 |