오늘 나는 (TIL)

[TIL 240626] Where 절과 Having 절, Inline View, Scalar Subquery

thebuck104 2024. 6. 26. 21:05

셋 째 날, 어느정도 적응이 되어가고 있다.

 

오늘 학습한 내용은 아래와 같다.

 


1.  date_format() 말고!

예시)

--년
Year(date)

--월
Month(date)
    
--일
Day(date)

 

활용

--현재 날짜
Getdate()
Now()
Sysdate()

--현재 년    
Year(now())

--현재 월
Month(now())
	
--현재 일
Day(now())

 

2. round, truncate, ceiling, floor

예시)

n = 123.45

round(n, 1)
	-- 123.5

truncate(n, -1)
	-- 120
    
ceiling(n)
	-- 124
    
floor(n)
	-- 123

 

3. Where 절과  Having 절

  Where 절 Having 절
1 그룹이 집계되기 전에 행을 필터링 집계 프로세스 후 그룹을 필터링
2 Group by 절 없이 Where 절을 사용 가능 Group by 절 없이 사용 불가능
3 행 작업으로 구현됨 열 작업으로 구현됨
4 집계함수가 포함될 수 없음 집계함수를 포함할 수 있음
5 Select, Update, Delete와 함께 사용 가능 Select와만 사용 가능
6 Upper, Lower 등과 같은 단일 행 함수와 함께 사용 Sum, Count 같은 다중 행 함수와 함께 사용

 

Where절과 Having 절은 SQL을 처음 하면 헷갈리기 쉽다.

위와 같은 점을 상기하며 사용하자

 

4. 집계함수란? (Aggregate Function)

집계 함수 용도
Count( * ) null 값을 포함한 행의 수를 출력함
Count( 표현식 ) 표현식의 값이 null 값인 것을 제외한 행의 수를 출력함
Sum( 표현식 ) 표현식의 null 값을 제외한 합계를 출력함
Avg( 표현식 ) 표현식의 null 값을 제외한 평균을 출력함
Max( 표현식 ) 표현식의 최대값을 출력함
Min( 표현식 ) 표현식의 최소값을 출력함
Stddev( 표현식 ) 표현식의 표준 편차를 출력함
Variran( 표현식 ) 표현식의 분산을 출력함

 

3번에서 나온 집계함수는 위와 같은 함수들을 포함한다.

 

5. 인라인 뷰 ( Inline View)

예시)

select x.age, x.occu, y.price
from (select age, occu, name from table_2 where 나이>=33) as x, table_2 y
where x.name = y.name

 

서브쿼리가 from에서 활용 되면 인라인 뷰라고 칭한다.

이를 활용해 위와 같이  join과 똑같은 짓을 할 수 있다.

 

뷰란?

저장장치 내에 물리적으로 존재하진 않지만 사용자에게 있는 것처럼 보이는 가상의 테이블

 

6. 스칼라 서브쿼리 (Scalar Subquery)

예시)

select a.name, a.age, 
(select b.name from table_2 b where b.name = a.name)
from table_1 a

 

서브쿼리가 하나의 컬럼처럼 활용 되는 것을 칭한다

예시는 역시 join과 같은 짓,

 

인라인 뷰는 from후에 오고, 스칼라 서브쿼리는 하나의 컬럼 처럼 사용된다.