-- 수업들으면서 몇가지 이해 안됐던 것들 간단히 정리해보려고 왔다.
-- 정리라기 보다는..
-- 그냥 알아먹기 쉽게 유치원생 수준으로 풀어쓴 나만의 이해방식이라고 해두자.
-- group by / where
select 내가 보고 싶은 컬럼 (* : 전부 다 보여줘)
from 어느 테이블에서??
where 이 조건에 만족하는 애들만 보여줄래?
group by 이 기준으로 그룹지어줘;
-- group by / having
select 내가 보고 싶은 컬럼
from 어느 테이블에서?
group by 이 기준으로 그룹지어줄래?
having 아 근데 여기 부합하지 않는 애들은 보여줄 필요없어^^;
-- 참고로 where에서는 avg(stu_score) > 90 이런 식을 쓸 수 없다.
-- 쓰면 그룹함수는 사용할 수 없고 오류뜸..
-- where stu_score > 90 은 가능하다.
-- 함수(avg(stu_score))가 안되는거다.
-------------------------------
-- partition
select 내가 보고 싶은 컬럼1, 컬럼2,
row_number() over (partition by 이 기준으로 나눠줄래?
order by 그리고 얘 기준으로 정렬해줘 (asc / desc)
from 이 테이블에서 말이야;
-- 셀렉트 부분에서 콤마 진짜 조심해야된다ㅡㅡ
-- 맨날 오류나서 당황해서 보면 콤마없어야하는 부분에 찍혀있어서,,
-- 아님 있어야하는 부분에 없어서..우쒸
-------------------------------
-- join
-- 이 테이블의 이거
-- 저 테이블의 저거
-- 조합해서 보고싶어요!
-- 첫번째 방법
select 원하는 컬럼
-- ( * : 전부다 볼래 || 이테이블.이컬럼, 저테이블.저컬럼, ...)
from 이테이블, 저테이블
where 이테이블.이컬럼 = 저테이블.저컬럼;
-- ( : 이테이블의 이컬럼과 저테이블의 저컬럼이 같으면 내가 원하는 컬럼 보여줄래?)
-- 두번째 방법 (ANSI표준)
select 원하는 컬럼 ( * : 전부다 볼래 || 이테이블.이컬럼, 저테이블.저컬럼, ...)
from 이테이블 inner join 저테이블 on 이테이블.이컬럼 = 저테이블.저컬럼;
-- 간혹 첫번째 방법이 안먹히는 데이터도 있기 때문에
-- 둘다 사용할줄 알아야할 것 같다.
-- 조인에는 inner join, left inner join, right inner join, full inner join 등이 있는데
-- 이번엔 inner join만 볼게여~~
-- natural join 하면 굳이 컬럼명을 명시해주지 않아도 같은 게 있음 알아서 조인해줌
-- 이너조인과 같은 결과. 같은 게 있으면 알아서 합쳐준다?!?!!!?!?!?
SELECT 이테이블.이컬럼, 저테이블.저컬럼, ... FROM 이테이블 NATURAL JOIN 저테이블;