IS boolean_value
!= 연산자는 false와 NULL을 비교할 수 없다. -> 결과가 null로 나오기 때문에 IS NOT FALSE라는 자세한 연산자를 사용해야 한다.
표현식A AND 표현식B : 표현식A && 표현식B
BETWEEN A AND B : A와 B 사이의 값(A,B 포함)
'%값' : 값을 제외한 모든 문자열(ex. '%과' -> '제일제과') // '%'와 '*'는 같은 표현
'값' - ''를 포함해서 글자수가 맞아야 하며 값의 위치가 맞는 문자열(ex. '나' -> '바나나') // 과 .는 같은 표현, LIKE와 ~~는 같은 표현
column_name LIKE '패턴' : 패턴에 해당되는 값들이 칼럼에 있으면 참
CASE문 (CASE\n TAB WHEN query...\n END column_name) : 해당 칼럼을 CASE의 조건으로 나누어 보여줌
COALESCE(매개변수...) : 함수에 제공되는 매개변수
COUNT(COLUMN) : 해당 칼럼의 개수를 세줌
DISTINCT : 테이블에서 중복 제거에서 사용
UNION : 두개의 쿼리문으로 하나의 테이블을 만듦.(칼럼이 같아야 가능) / UNION ALL과 UNION 의 차이점 : UNION은 중복을 제거하고 테이블을 만듦.
INTERSECT : 두 쿼리의 교집합으로 테이블을 만듦.
EXCEPT : 두 쿼리의 여집합으로 테이블을 만듦.(먼저 입력한 테이블이 우선)
GROUP BY : 원하는 조건으로 칼럼을 그룹화(칼럼은 SELECT의 순서대로 숫자로 나타낼 수 있다 - 비추)
HAVING : 집계데이터를 조건으로 검색하고 싶을 경우 -> GROUP BY의 조건을 달고 싶을때 사용
JOIN : 테이블을 가로로 추가
SELECT * FROM ramen. rating == SELECT rating CROSS JOIN ramen -> 조인
INNER JOIN : 교집합, LEFT or RIGHT OUTER JOIN : 해당 방향쪽 주로, FULL OUTER JOIN : 합집합
--> ex. SELECT columns FROM table1 INNER JOIN table2 ON 조건 or USING() : ON은 같은 칼럼이 없으면 사용, USING은 같은 칼럼을 하나에 묶어줌.
커미션 디나이 : 권한 없음 -> 관리자 권한으로 실행해야 한다.
원하는 폴더에서 cmd창 여는법 : 해당 경로에 들어가서 검색에 cmd를 치면 해당 경로에서 cmd가 열림.
SQL 우선순위 : FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> ORDER BY -> LIMIT
<데이터 모델링>
SELECT 지역명, 학교명, 100 * (취업여자수 + 취업남자수) / (졸업여자수 + 졸업남자수) AS 취업률
FROM graduates
WHERE
기준년도 >= '2015-01-01' AND
기준년도 < '2016-01-01' AND
(취업여자수 + 취업남자수) != 0 AND
100 * (취업여자수 + 취업남자수) / (졸업여자수 + 졸업남자수) >= 50;
비율을 구하는 문제가 고민이였다. 계산만 하면 됐는데 0으로 나눌 수 없다는 부분이 생각을 많이 하게 만든 것 같다.
SELECT
extract(year from 기준년도) AS 기준년도,
학교명,
SUBSTRING(지역명, 9, 4) AS 지역명,
(CASE
WHEN 졸업여자수 + 졸업남자수 = 0 THEN 0
ELSE ((진학여자수 + 진학남자수)*100)/ (졸업여자수 + 졸업남자수)
END)
AS 진학률
FROM graduates
WHERE
지역명 LIKE '%고양시 일산%'
ORDER BY ((진학여자수 + 진학남자수)*100)/ (졸업여자수 + 졸업남자수) DESC;
이 문제는 확인할 것이 많다.
1.EXTRACT(TYPE FROM column_name) : 형변환에 사용되는 함수
2.SUBSTRING(column_name, start_index, string_len) : 문자열 자르기 함수
3.CASE (WHEN 조건 THEN result ELSE result END) : 기존 조건문을 CASE로 해결
4.column_name LIKE data : 문자열 비교는 LIKE로 해야한다. '=' 비교는 안됨.