안녕하세요.
지난 포스팅에서 SQL의 조건절
HAVING, WHERE 조건절의 사용과 차이점까지 진행되었습니다
전체 데이터를 조건화, 그룹화하여
원하는 데이터를 추출 할 수 있는 아주 유용한 쿼리입니다.
실무를 할 때 데이터를 탐색하여 데이터 인사이트의
기초가 될 수 있는 유용한 쿼리라고 볼 수 있어요.
오늘 포스팅 할 쿼리들은 SQL에서 정말 유용하게 쓰이는 '정렬'입니다
SQL에서 보기 쉽게 정렬하는 기능, 문법은 어떤것들이 있을까요?
실무 데이터 분석을 하신다면 꼼꼼히 봐주세요
ORDER BY 정렬
지난 포스팅에 이어서 진행하겠습니다
(지난 포스팅) https://s-s-o-story.tistory.com/20
[분석 기초] SQL 쿼리 조건절, 그룹화로 특정 데이터 추출하기 (조건절 having vs where 차이!)
지난 포스팅에서 SQL 집계함수 [group by] 까지 진행되었습니다 전체 데이터의 합계(sum), 최소값(min), 최대값(max), 평균값(avg) 등의 집계 정보를 추출할 수 있는 아주 유용한 쿼리입니다. 실무를 하다
s-s-o-story.tistory.com
지난시간 WHERE, HAVING 조건절을 사용하면서, 해당 조건을 설정하고, 그에 맞는 데이터를 추출해보았습니다
이번 포스팅은 여기에 추가적으로 함께 쓸 수 있는 유용한 정렬 쿼리를 진행할게요
10. 정렬 ORDER BY
* 혹~시 잊어버릴 수 있으니, 기존 전체데이터를 잠시 보겠습니다
select *
from sql_ssostory_1 ss
10-1. 업종별(category 칼럼)으로 정렬하기
order by 절를 사용합니다
order by category 쿼리를 추가하면, 카테고리별로 정렬이되죠.
select *
from sql_ssostory_1 ss
order by category
- category 컬럼은 한글값들이기 때문에, 가나다 순으로 정렬이 되었죠
10-2. 업종별, 점포수, 종사자수로 정렬하기 (order by 다중 정렬)
정렬기준은 하나 이상 다양하게 가능합니다.
order by category, store_num, employee_num 쿼리는,
카테고리별->점포수->종사자수 순으로 정렬이 됩니다
select *
from sql_ssostory_1 ss
order by category, store_num, employee_num
10-3. 매출액이 높은순서로 정렬하기
- 먼저, 복습할 겸 카테고리별로 매출액 합계를 구해볼게요
select category , sum(sales)
from sql_ssostory_1 ss
group by 1
* 유의! -> 이 코드는 실행이 되지 않습니다
select category , sum(sales) as sales_sum
from sql_ssostory_1 ss
group by 1
order by sales
왜냐하면, selct 절을 봐주세요. 지금 출력되는 것은 category, sales_sum 컬럼 밖에 없어요.
이제 매출액 별로 정렬해보겠습니다
order by sales_sum 쿼리를 추가하면됩니다
select category , sum(sales) sales_sum
from sql_ssostory_1 ss
group by 1
order by sales_sum
결과가 나왔습니다. 그런데 오름차순이네요? 매출액(sales_sum)이 높은 순서대로 보고싶은데...
10-4. 내림차순으로 정렬하기 desc
order by 절에서 내림차순 하고싶은 컬럼명 옆에 desc 를 추가해줍니다
select category , sum(sales)
from sql_ssostory_1 ss
group by 1
order by sum desc
매출액 합계 칼럼을 기준으로 내림차순 정렬되었습니다
한식 음식업종이 전체 매출액이 가장 높네요!
10-5. 정렬 심화. 내림차순 오름차순 혼합 사용
매출액은 높은것부터 나왔으면 좋겠고, 종사자수, 영업비용,는 적은것부터 나왔으면 좋겠어...(욕심...)
그러면 순서대로 매출액 합계 sum(sales)는 desc. 즉 내림차순으로,
나머지 종사자수(employee_num), 영업비용(cost)는 기본값 오름차순으로 정렬하면 되겠죠
* 참고 : order by도 group by처럼 컬럼명을 직접 써도 되고, 컬럼 순서 숫자로 입력해도 됩니다
select category, fanchise, employee_num ,"cost", sum(sales) as sales_sum
from sql_ssostory_1 ss
group by 1,2,3,4
order by 5 desc, 3 , 4
* 참고로 우리가 분석하고 있는 데이터에서는 'cost'라는 컬럼명이 존재하는데,
SQL의 cost는 또다른 문법을 가진 명령어네요. 그래서 cost컬럼을 쓸 때 따옴표로 감싸주어야 실행이 됩니다
(의미가? SQL문의 Cost는 실행계획 같은 도구에 의해 만들어진 수치와 SQL이 수행될때 실제 소비되는 자원을 의미한다. 참고 자료 : http://wiki.gurubee.net/pages/viewpage.action?pageId=1966887)
유의) select 절에 없는 컬럼으로도 정렬할 수 있을까? -> 불가능!
select fanchise, sum(sales)
from sql_ssostory_1 ss
group by 1
order by category
이 코드는 실행되지 않습니다.
생각해보면, select절에 있는 것들만 출력이 되죠. 그런데 없는 걸 정렬해서 어떻게 볼 수 있을까요... 불가능!
이제 SQL 실무에서 사용하기는 거의 다 끝나가네요
여기까지 차근차근 따라 오셨다면, 이전에 포스팅 했듯이
이제 배우지 않은 쿼리들도 대략 이해하실 수 있을 겁니다
SQL쿼리는 굉장히 직관적이라, 몇번 따라해보면 크게 어렵게 생각하실 필요가 없어요.
이제 남은 몇가지 중요한 파트들도 열심히 진행해볼게요
실무에서 데이터분석하기! 빠르게 진행해볼게요~
데이터 분석 실무 초고속 정복하기!
더 좋은 꿀팁들을 알고 계시면 공유해주세요!^^
'IT_SQL' 카테고리의 다른 글
[분석 기초] SQL 기본 문법 총정리. GROUP BY, HAVING절 구문 팁! (0) | 2021.10.26 |
---|---|
[분석 기초] SQL 기본 문법 총정리. select, where절 구문 팁! (0) | 2021.10.25 |
[분석 기초] SQL 쿼리 조건절, 그룹화로 특정 데이터 추출하기 (조건절 having vs where 차이!) (0) | 2021.10.20 |
[분석 기초] SQL 쿼리로 특정 데이터 탐색, 총합, 평균, 최소/최대값 구하기 (집계함수 group by!) (0) | 2021.10.17 |
[분석 기초] SQL 기본 쿼리로 데이터 탐색하기 (where 조건절!) (0) | 2021.10.16 |