
오늘은 어제 얘기했던 대로 Query를 통한 연산 과정을 다뤄야겠다.
SQL에서는 엑셀처럼 여러가지 계산식을 수행할 수 있다.
- 더하기 : +
- 빼기 : -
- 곱하기 : *
- 나누기 : /
위의 연산자를 통해 컬럼과 컬럼을 더할 수 있다.
select first_num, second_num first num + second_num as total_num # from numbers
SQL은 또한 엑셀의 함수처럼 계산의 편의를 위한 함수를 제공한다.
다만 유의할 점은 엑셀은 '범위'를 제공해야 한다면 SQL 은 컬럼을 제공해야 한다는 점이다.
- 합계 : SUM(컬럼)
- 평균 : AVG(컬럼)
select sum(first_num) total_first_num, avg(second_num) avg_second_num from numbers
현재 테이블이 몇 개의 데이터를 가지고 있는지와 몇 개의 값을 가지고 있는지 구할 수 있다.
- 데이터의 갯수 : COUNT(컬럼), COUNT(1), COUNT(*)
- 몇 개의 값을 가지고 있는지의 값을 구할 때 : DISTINCT (중복 제거)
select COUNT(1) # 혹은 COUNT(컬럼, *) 다 가능 COUNT(colunm) # 컬럼의 행의 수를 반환 DISTINCT(column) #컬럼에 몇개의 값이 있는지 from table
where절을 수십번 사용하여 쿼리를 작성하는 비효율적인 쿼리문을 방지하기 위해 사용하는 GROUP BY
GROUP BY는 카테고리를 지정하여 수식 함수로 연산하는 것을 말한다.
select 카테고리컬럼(원하는컬럼 아무거나), sum(계산 컬럼), from group by 카테고리컬럼(원하는컬럼 아무거나)
SQL을 사용하여 조회한 결과를 정렬할 때 사용하는 order by
select 카테고리컬럼(원하는컬럼 아무거나), sum(계산 컬럼), from group by 카테고리컬럼(원하는컬럼 아무거나) order by 정렬을 원하는 컬럼 (카테고리컬럼(원하는컬럼 아무거나), sum(계산 컬럼) 둘 다 가능)
처음 강의를 들을 때 이해가 잘 안갔던 부분이 1이었는데 1의 역할을 찾아보았다.
- 열 번호 참조
- 레코드 수 카운트
- LIMIT 1
- CASE 문 에서 1
열 번호 참조
열 번호 참조는 group by 1 이나 order by 1 과 같이 쓰이는데 이는 결과 세트의 처 번째 열을 기준으로 그룹화 하거나 정렬하라는 의미이다.
select name, age from people group by 1
처럼 group by 1 을 한다면 name을 기준으로 결과를 그룹화한다..
레코드 수 카운트
select COUNT(1) from people
people이라는 테이블의 모든 행을 카운트 한다.
LIMIT 1
select * from people where age > 30 LIMIT 1
age > 30 을 만족하는 첫 번째 레코드를 반환한다.
CASE 문 에서 1
case 문에서 1을 사용하여 특정 조건을 만족하는 경우 하나를 카운트하거나 특정 값을 반환하는 데 사용한다.
select COUNT(case when age > 30 THEN 1 END) from people
위의 코드는 age가 30 초과를 만족하는 레코드의 수를 카운트 한다.