MySQL version
SELECT
- 기본 조회 : SELECT * FROM TABLE_NAME : 테이블에서 모든 레코드 조회
- 정렬 : SELECT COLUMN_NAME FROM TABLE_NAME ORDER BY COLUMN_NAME ASC : 순서대로 정렬 (생략 가능)
- 역순 정렬 : SELECT COLUMN_NAME FROM TABLE_NAME ORDER BY COLUMN_NAME DESC : 역순으로 정렬
- 조건 여러 개 정렬 : SELECT COLUMN_NAME FROM TABLE_NAME ORDER BY COLUMN_NAME1 ASC COLUMN_NAME2 DESC : COL1으로 정렬 후 같을 시 NAME2로 역순 정렬
- 조건부 조회 : SELECT COLUMN_NAME FROM TABLE_NAME WHERE COLUMN_NAME =,!= '조건' ORDER BY ~~
- 상위 n개 조회 : SELECT COLUMN_NAME FROM TABLE_NAME ORDER BY ~~ LIMIT n
- 중복제거 : SELECT DISTINCT COLUMN_NAME FROM TABLE_NAME
WHERE 조건 ( 작은따옴표 사용하기)
- 비교 : WHERE COLUMN_NAME < 20000 또는 COLUMN_NAME > 10000 AND COLUMN_NAME <= 20000
- 범위 : WHERE COLUMN_NAME BETWEEN 10000 AND 20000 (위와 동일한 조건)
- 집합 : WHERE COLUMN_NAME IN ('A', 'B')
- 패턴 : WHERE NAME LIKE '~~~' 또는 '%축구%' ( 축구란 단어가 들어간 모두) 또는 '_구%' (두 번째 위치에 구가 해당)
- NULL : WHERE COLUMN_NAME IS NULL 또는 IS NOT NULL
- 복합 조건 : WHERE (COLUMN_NAME < 20000) AND (NAME LIKE '~~~')
집계 함수(MAX, MIN, SUM, AVG, COUNT)
- 최댓값 : SELECT MAX(COLUMN_NAME) AS 원하는 이름 FROM TABLE_NAME
- 최솟값 : SELECT MIN(COLUMN_NAME) AS 원하는 이름 FROM TABLE_NAME
- 개수 : SELECT COUNT(COLUMN_NAME) AS 원하는 이름 FROM TABLE_NAME
- 평균 : SELECT AVG(COLUMN_NAME) AS 원하는 이름 FROM TABLE_NAME
- 총합 : SELECT SUM(COLUMN_NAME) AS 원하는 이름 FROM TABLE_NAME
- NULL과 중복 제거한 개수 : SELECT COUNT(DISTINCT NAME) FROM TABLE WHERE NAME IS NOT NULL
GROUP BY - 속성 값이 같은 값끼리 그룹을 만들 수 있다.
예를 들어 GROUP BY custid일시 custid가 같은 값끼리 그룹을 묶는다.(1 끼리, 2 끼리, 3 끼리...)
ex) 고객별로 주문한 도서의 총수량과 총판매액을 구하시오.
SELECT custid, COUNT(*) AS 도서수량, SUM(saleprice) AS 총액
FROM Orders
GROUP BY custid;
HAVING - GROUP BY의 결과에 조건을 걸어주는 역할을 한다.
ex) 가격이 8천원 이상인 도서를 구매한 고객에 대하여 고객별 주문 도서의 총수량을 구하시오. 단, 두 권 이상 구매한 고객만 구하시오.
SELECT custid, COUNT(*) AS 도서수량
FROM Orders
WHERE saleprice >= 8000
GROUP BY custid
HAVING COUNT(*) >= 2
DATETIME에서 속성 추출
- HOUR(DATETIME COLUMN NAME) : TYPE이 DATETIME인 데이터에서 시간만 추출할 수 있다.
- MINUTE : 분 정보 추출
- SECOND : 초 정보 추출
ex) 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.
SELECT HOUR(DATETIME) HOUR, count(*) as COUNT
FROM ANIMAL_OUTS
GROUP BY HOUR(DATETIME)
HAVING HOUR >= 9 AND HOUR <= 19
ORDER BY HOUR(DATETIME)
'문제 풀이 > 프로그래머스 알고리즘, SQL' 카테고리의 다른 글
[프로그래머스 SQL] 있었는데요, 없었습니다 (join) (0) | 2021.02.23 |
---|---|
[프로그래머스 SQL] NULL 처리하기 (0) | 2021.02.23 |
[프로그래머스] 3진법 뒤집기 (n진법, bitset) [C++] (0) | 2021.01.03 |
[프로그래머스] 문자열 내 마음대로 정렬하기(문자열) [C++] (0) | 2020.12.28 |
[프로그래머스] 완주하지 못한 선수(map) [C++] (0) | 2020.12.23 |