SQL에서 데이터를 뽑아낼 때, 칼럼의 값들을 수학적으로 연산하거나, 평균, 최대, 최솟값을 도출해낼 수 있다는 사실을 알게 되었다.
SUM() 합계
AVG() 평균
COUNT() / COUNT(distinct ) 개수 세기
MIN() 최솟값
MAX()최댓값
Group by 카테고리 별 연산
Order by 오름차순 정렬
덧셈, 뺄셈, 나눗셈, 곱셈같은 기본 사칙연산은 우리가 알고 있는 연산자로도 가능하다.
예를 들어 칼럼A와 칼럼B의 값을 합친 칼럼B를 만들고 싶다면 다음과 같은 코드를 작성할 수 있다.
select A+B as C
from 테이블명
어떤 칼럼의 총 합을 구한다던가, 평균을 구하는 것도 함수를 통해 가능하다.
select sum(칼럼명)
from 테이블명
select avg(칼럼명)
from 테이블명
데이터의 개수를 세고 싶을 때는 count함수를 사용한다.
count(*)를 쓰면 테이블의 전체 데이터의 개수를 구한다는 것인데 예를 들어 어떤 상점의 주문목록 데이터라면 들어온 주문의 개수를 구하는 것이다.
select count(*)
from 테이블명
그런데 이때, 괄호()의 안에 distict를 넣고 띄어쓴 다음에 칼럼의 값을 쓰게 되면 해당 칼럼이 몇 개의 값(종류)를 가지고 있는지 세어준다.
예를 들어, 카드와 현금으로만 결제가 가능한 상점의 주문 데이터베이스를 확인한다고 하자.
select count(distict payment) as '결제 방법'
from orders
결제 방법을 payment 칼럼으로 설정했다고 상정하면 위와 같은 코드를 작성할 수 있다. 그러면 '결제 방법' 칼럼에는 2라는 숫자가 찍힐 것이다. (카드와 현금)
데이터의 최댓값과 최솟값도 구할 수 있다.
select max(칼럼명)
from 테이블명
select min(칼럼명)
from 테이블명
만약 상점의 주문 데이터에서 10대, 20대, 30대 등 나잇대별로 주문평균값만 내고 싶다던가, 요일별로 주문의 최댓값을 구하고 싶을 때, 일일이 where 문으로 구하는 것보다 일괄적으로 계산을 할 수 있는 방법이 있다.
즉, 특정 칼럼 내의 값(종류;카테고리) 별로 계산을 할 수 있는 방법은 바로 group by 함수를 사용하는 것이다.
예를 들어 어떤 칼럼의 카테고리 별 합계를 구하고 싶다면 다음과 같은 코드를 짤 수 있다.
select 카테고리 칼럼, sum(계산 칼럼)
from 테이블 명
group by 카테고리 칼럼
group by 함수는 where 아래에 적는다.
방대한 데이터를 볼 때 가장 중요한 것은 정렬일 것이다.
데이터를 정렬하는 방법으로는 order by 문을 사용하는 방법이 있다.
숫자나 영어, 심지어 한국어로까지 오름차순과 내림차순이 가능하다.
바로 마지막에 order by '기준이 될 칼럼'을 적는 것이다.
이 때, 그냥 order by 만 적으면 오름차순이 되고, 칼럼명 뒤에 desc까지 적어주면 내림차순이 된다.
select *
from 테이블명
order by 칼럼명
select *
from 테이블명
order by 칼럼명 desc