본 글은 인프런의 '[백문이불여일타] 데이터 분석을 위한 중급 SQL'강의를 듣고 직접 실습한 내용입니다.
[백문이불여일타] 데이터 분석을 위한 중급 SQL - 인프런 | 강의
인프런 누적 수강생 8000명 이상, 풍부한 온/오프라인 강의 경험을 가진 데이터리안의 SQL 중급 강의. SQL 중급 이론을 배우고, 실습 문제를 함께 풀어봅니다., - 강의 소개 | 인프런...
www.inflearn.com
Dashboard | HackerRank
Join over 16 million developers in solving code challenges on HackerRank, one of the best ways to prepare for programming interviews.
www.hackerrank.com
물건을 파는 사람이라고 가정해보자.
매출을 분석하기 위해서 단순하게 내가 판 물건의 매출을 모두 더하는 것이 아니라 지역/연령별로 나눠서 패턴을 찾으려고 할 것이다.
- GROUP BY
- GROUP BY에 있는 칼럼이 SELECT에도 들어가야 함
- ORDER BY를 사용할 경우 GROUP BY 뒤에 와야함 (순서 중요)
-- 공급자별 평균 가격 구하기
SELECT SupplierID, AVG(Price)
FROM Products
GROUP BY SupplierID;
-- 공급자와 카테고리별 평균 가격을 조회하고 내리차순 정렬하기
SELECT SupplierID
, CategoryID
, AVG(Price)
FROM Products
GROUP BY SupplierID, CategoryID -- 기준을 추가할 경우 콤마(,)로 이어줌
ORDER BY AVG(Price) DESC;
- HAVING - GROUP BY 절에 의해 생성된 결과 값 중 원하는 조건에 부합하는 자료만 보고자 할 때 사용
- AS - Alias(별칭), 이름이 길거나 구분이 필요한 칼럼이나 테이블의 이름을 다시 지을 때 사용
해커랭크 문제풀이
1. Top Earners
/* 1.salary x months = earnings
2. 각 earning 별로 몇 명이 그만큼 벌었는지 계산 (5000,2 / 3000, 5/ 10000, 1) GROUP BY
3. earning 중에 가장 큰 값을 가져온다. ORDER BY, LIMIT
*/
SELECT salary * months AS earnings
, COUNT(*)
FROM employee
GROUP BY earnings
ORDER BY earnings DESC
LIMIT 1;
'스터디 > SQL' 카테고리의 다른 글
[MySQL] ch08_조인문 정리/ INNER JOIN, OUTER JOIN(LEFH JOIN, RIGHT JOIN, FULL JOIN), SELF JOIN (0) | 2022.03.22 |
---|---|
[MySQL] ch07_조건문(CASE) (0) | 2022.03.21 |
[MySQL] ch05_집계 함수(COUNT, SUM, AVG, MAX, MIN) (0) | 2022.03.18 |
[MySQL] ch04_ORDER BY, LEFT, RIGHT, SUBSTRING, CEIL, FLOOR, ROUND (0) | 2022.03.18 |
[MySQL] ch03_LIKE, NOT LIKE, IN, BETWEEN, IS NULL, IS NOT NULL, DISTINCT (0) | 2022.03.17 |