일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 리프 중심 트리 분할
- 그로스 해킹
- XGBoost
- pmdarima
- WITH ROLLUP
- WITH CUBE
- 마케팅 보다는 취준 강연 같다(?)
- 데이터 핸들링
- Growth hacking
- 컨브넷
- 인프런
- 부트 스트래핑
- 그룹 연산
- 분석 패널
- DENSE_RANK()
- python
- 데이터 정합성
- 3기가 마지막이라니..!
- lightgbm
- 데이터 증식
- tableau
- splitlines
- 로그 변환
- 스태킹 앙상블
- 캐글 신용카드 사기 검출
- ARIMA
- ImageDateGenerator
- 그로스 마케팅
- sql
- 캐글 산탄데르 고객 만족 예측
- Today
- Total
LITTLE BY LITTLE
[3] SQL로 분석하고 Tableau로 시각화하자 - 예제 본문
예제 풀어보기
Q01.
a. [Order]테이블의 모든 열을 조회하여라.
USE EDU
SELECT * FROM [Order]
b.[shop_code]는 30이상으로만 필터하여라.
SELECT * FROM [Order]
WHERE shop_code>=30
- SELECT * FROM [TABLE]
- 전부다 보는거긴 보는건데, WHERE을 사용해서 조회할 열을 설정
c.[mem_no]별 [sales_amt]합계를 구하여라. (SUM(sales_amt)의 열 이름은 tot_amt)
SELECT mem_no
,SUM(sales_amt) AS tot_amt
FROM [Order]
WHERE shop_code>=30
GROUP
- BY mem_no --"~~별로 구하여라"
- 해당되는 컬럼만 select해야한다.
- GROUP BY 해당되는 컬럼 을 마지막에 해주어야한다.
d. [sales_amt]합계가 100000 이상으로만 필터하여라.
--내 오답
SELECT * FROM [Order]
WHERE SUM(sales_amt)>100,000
--정답
SELECT mem_no
,SUM(sales_amt) AS tot_amt
FROM [Order]
WHERE shop_code>=30
GROUP
BY mem_no /*여기까지 위3번 답과 동일*/
HAVING SUM(sales_amt)>=100000 /*Having은 Groupby 된 테이블을 특정 조건으로 필터하는 명령어이다.*/
e.[sales_amt] 합계가 높은 순으로 정렬하여라.
- 위에서 배운 예시 다시 보기 (SELECT->COUNT->FROM->WHERE->GROUP BY->HAVING->ORDER BY)
- Having은 Groupby 된 테이블을 특정 조건으로 필터하는 명령어
SELECT addr
,COUNT(mem_no) AS [회원수집계]
FROM [Member]
WHERE gender = 'man'
GROUP
BY addr
HAVING COUNT(mem_no) >=50
ORDER
BY COUNT(mem_no) DESC
-- 다시 예제로 돌아와서
SELECT mem_no
,SUM(sales_amt) AS tot_amt
FROM [Order]
WHERE shop_code>=30
GROUP
BY mem_no
HAVING SUM(sales_amt)>=100000
ORDER BY SUM(sales_amt) DESC
Q02.
a.[Order]테이블 기준으로 [Member] 테이블을 LEFT JOIN하여라.
SELECT *
FROM [Order] A
LEFT
JOIN [Member] B
ON A.mem_no = B.mem_no
b.[gender]별 [sales_amt]합계를 구하여라.
--내 오답
SELECT gender
,SUM(sales_amt) AS tot_amt
FROM [Order]
GROUP
BY gender
--정답
SELECT B.gender
,SUM(sales_amt) AS tot_amt
FROM [Order] A
LEFT
JOIN [Member] B
ON A.mem_no = B.mem_no
GROUP
BY B.gender
c.[gender],[addr]별 [sales_amt]합계를 구하여라.
SELECT B.gender,B.addr
,SUM(sales_amt) AS tot_amt
FROM [Order] A
LEFT
JOIN [Member] B
ON A.mem_no = B.mem_no
GROUP
BY B.gender,B.addr
Q3.( Join, Sub query 이용 )
-- 앞에서 배운 예시1.서브쿼리(select)
SELECT *
,(SELECT gender
FROM [Member] B
WHERE A.mem_no = B.mem_no) AS gender
FROM [Order] A
-- 앞에서 배운 예시2.서브쿼리(from)
SELECT *
FROM (
SELECT mem_no
, SUM(sales_amt) AS tot_amt
FROM [Order]
GROUP
BY mem_no
)A
LEFT
JOIN [Member] B
ON A.mem_no = b.mem_no
-- 앞에서 배운 예시1.단일서브쿼리(where)
SELECT *
FROM [Order]
WHERE mem_no = (SELECT mem_no FROM [Member] WHERE mem_no = '1000005')
-- 앞에서 배운 예시2.다중서브쿼리(where)
SELECT *
FROM [Order]
WHERE mem_no IN (SELECT mem_no FROM [Member] WHERE gender = 'man')
a.[Order]테이블의 [mem_no]별 [sales_amt]합계를 구하여라.
SELECT mem_no
,SUM(sales_amt) AS tot_amt
FROM [Order]
GROUP BY mem_no
b.(a)를 FROM절 서브쿼리를 사용하여, [Member]테이블을 Left JOIN 하여라
SELECT *
FROM ( SELECT mem_no ,SUM(sales_amt) AS tot_amt
FROM [Order] GROUP BY mem_no)A
LEFT JOIN [Member] B
ON A.mem_no = B.mem_no
- a에서 입력한 변수별 합계를 서브쿼리 안에 전부다 넣어버림 (from select ~~)
c.[gender],[addr]별 [tot_amt]합계를 구하여라.
-- 내 오답
SELECT *
FROM (SELECT A.gender,A.addr, SUM(sales_amt) AS tot_amt
FROM [Order] GROUP BY gender,addr)A
LEFT JOIN [Member] B
ON A.mem_no = B.mem_no
-- 정답
SELECT B.gender, B.addr
,SUM(tot_amt)
FROM (SELECT mem_no,SUM(sales_amt) AS tot_amt
FROM [Order]
GROUP BY mem_no) A
LEFT JOIN [Member] B
ON A.mem_no = B.mem_no
GROUP BY B.gender,B.addr
Q04.
a.addr이 Seoul이 아닌 값만 조회하여라
SELECT *
FROM [Member]
WHERE addr <> 'seoul'
b.[gender]가 'man' 및 [ageband]가 20인 값만 조회하여라
SELECT *
FROM [Member]
WHERE gender = 'man' AND ageband = 20
c.[ageband]가 20~40 사이 값만 조회하여라
SELECT *
FROM [Member]
WHERE ageband BETWEEN 20 AND 40
d.[addr]이 'ae'를 포함하는 값만 조회하여라
SELECT *
FROM [Member]
WHERE addr LIKE '%ae%'
e. [sales_amt]를 0.1 곱셈하여라.(컬럼명은 fees)
SELECT *
,SALES_AMT * 0.1 AS fees
FROM [Order]
f. [sales_amt]에 [sales_amt]을 0.1곱셈한 값을 뺄셈하여라.(컬럼명은 Excluding_fees)
SELECT *
,sales_amt * 0.1 AS fees
,sales_amt - (sales_amt * 0.1) AS Excluding_fees
'시각화 > SQL로 분석하고 Tableau로 시각화하자' 카테고리의 다른 글
[6] SQL로 분석하고 Tableau로 시각화하자 - VIEW,PROCEDURE,데이터 마트, 데이터 정합성 (0) | 2022.07.13 |
---|---|
[5] SQL로 분석하고 Tableau로 시각화하자 - 윈도우 함수,집합 연산자 (0) | 2022.07.12 |
[4] SQL로 분석하고 Tableau로 시각화하자 - 그룹함수 (0) | 2022.07.12 |
[2] SQL로 분석하고 Tableau로 시각화하자 (0) | 2022.07.12 |
[1]SQL로 분석하고 Tableau로 시각화하자 (0) | 2022.07.12 |