SQL 쿼리 : SELECT

파송송계란빡 ㅣ 2022. 3. 4. 21:09

프로그래머스 SQL 문제 단계 풀면서 정리하였습니다.

그냥 간단하게 한눈에 볼수 있을 정도로만 정리하였습니다.

 

 


SELECT

모든 컬럼 조회 + 오름차순 정렬

SELECT * FROM 테이블이름 ORDER BY 컬럼명 DESC;

SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC;

 

특정 컬럼 조회

SELECT 컬럼이름1, 컬럼이름2 FROM 테이블이름;

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS;

 

다수의 특정한 컬럼 조회 + 특정 값을 찾음

 - WHERE 컬럼이름 = "찾을값"

SELECT 컬럼이름1, 컬럼이름2 FROM 테이블이름 WHERE 컬럼이름3 = "찾을값";

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION = "Sick";

ORDER BY

 

특정 컬럼 조회 + 오름차순 정렬

 - ORDER BY 정렬할컬럼이름

SELECT 컬럼1, 컬럼2 FROM 테이블이름 ORDER BY 정렬할컬럼이름 DESC;

SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC;

 

다수 특정 컬럼 조회 + 특정컬럼 찾는 값이 아닌 경우 + 오름차순 정렬

 - WHERE 컬럼이름 != "찾지않을값"

 - ORDER BY 정렬할컬럼이름

SELECT 컬럼이름1, 컬럼이름2 FROM 테이블이름 WHERE 컬럼3 != '찾는값' ORDER BY 정렬할컬럼이름;

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION != 'Aged' ORDER BY ANIMAL_ID;

 

특정 컬럼 오름차순 정렬 + 특정 컬럼 내림차순 정렬

 - ORDER BY 컬럼이름1 ASC, 컬럼이름2 DESC

SELECT 컬럼이름1, 컬럼이름2, 컬럼이름3 FROM 테이블이름 ORDER BY 컬럼이름2 ASC, 컬럼이름3 DESC;

SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS ORDER BY NAME ASC, DATETIME DESC;

 

오름차순 정렬 + 상위 1개 출력

 - LIMIT 1

SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME limit 1;

SELECT 컬럼이름1 FROM 테이블이름 ORDER BY 컬럼이름2 limit 1;

 


MAX, MIN, COUNT, DISTINCT

 

가장 큰 값 조회

 - MAX()

SELECT MAX(컬럼이름) FROM 테이블이름;

SELECT MAX(DATETIME) FROM 테이블이름;

 

가장 큰 값 조회 + 출력할 컬럼 이름 변경

 - MAX()

 - AS ""

SELECT MAX(컬럼이름) AS '출력시바꿀컬럼이름' FROM 테이블이름

SELECT MAX(DATETIME) AS '시간' FROM ANIMAL_INS

 

가장 작은 값 조회

 - MIN()

SELECT MIN(컬럼이름) FROM 테이블이름;

SELECT MIN(DATETIME) FROM ANIMAL_INS;

 

개수 조회하기

 - COUNT()

SELECT COUNT(*) FROM ANIMAL_INS;

SELECT COUNT(컬럼이름) FROM 테이블이름;

SELECT COUNT(ANIMAL_ID) FROM ANIMAL_INS;

 

중복 제거 조회 + 개수 세기 + NULL 아닌값 찾기

 - DISTINCT()

 - IS NOT NULL

SELECT COUNT(DISTINCT 컬럼이름) FROM 테이블이름 WHERE 컬럼이름 IS NOT NULL;

SELECT COUNT(DISTINCT NAME) FROM ANIMAL_INS WHERE NAME IS NOT NULL;

 


IS NULL

 

특정 컬럼이 빈 경우 + 빈 컬럼의 다른 컬럼과 값 출력

 - IS NULL

SELECT 컬럼이름1 FROM 테이블이름 WHERE 컬럼이름2 IS NULL;

SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL;

 

특정 컬럼이 빈지 않은 경우 + 비지 않은 컬럼의 다른 컬럼과 값 출력

 - IS NOT NULL

SELECT 컬럼이름1 FROM 테이블이름 WHERE 컬럼이름2 IS NOT NULL;

SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL;

 

특정 값이 NULL인 경우 다른 이름으로 변경

 - IFNULL(컬럼명, "NULL인경우변경값")

SELECT ANIMAL_TYPE, IFNULL(NAME, "No name"), SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANIMAL_ID;

SELECT 컬럼이름1, IFNULL(NULL이포함된컬럼이름2, "NULL인경우대신들어갈값"), 컬럼이름3 FROM 테이블이름 ORDER BY 정렬할컬럼명;

 

 

 

 


GROUP BY, HAVING

 

그룹으로 묶기

 - GROUP BY 컬럼이름

SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE;

SELECT 컬럼이름1, COUNT(컬럼이름2) FROM 테이블이름 GROUP BY 컬럼이름 ORDER BY 정렬할컬럼이름;

 

그룹으로 묶기 + 묶은 그룹에 특정 조건 주기

 - GROUP BY 컬럼이름

 - HAVING 조건

SELECT 컬럼이름1, COUNT(컬럼이름2) FROM 테이블이름 WHERE 컬럼이름1 IS NOT NULL GROUP BY 컬럼이름1 HAVING COUNT(컬럼이름1) >= 2 ORDER BY 컬럼이름1 ASC;

SELECT NAME, COUNT(NAME) FROM ANIMAL_INS WHERE NAME IS NOT NULL GROUP BY NAME HAVING COUNT(NAME) >= 2 ORDER BY NAME ASC;

 

시간 그룹으로 묶기

- HOUR(컬럼이름)

- HAVING 조건

SELECT HOUR(DATETIME) AS HOUR, COUNT(HOUR(DATETIME)) AS COUNT
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) >= 9 AND HOUR(DATETIME) <= 19
GROUP BY HOUR(DATETIME)
ORDER BY HOUR(DATETIME) ASC;

'코테풀이 > SQL' 카테고리의 다른 글

SQL 쿼리 : INSERT  (0) 2022.03.05
1단계_SQL 문제  (0) 2021.12.17
SQL 쿼리 : SELECT