프로그래머스 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 |