기타 개발
SQL 과제작업 - 데이터기반 처리
정느
2019. 12. 3. 01:13
/*이용건수 합계, 이용금액 합계 열 추가*/
ALTER TABLE [dbo].[중국인카드데이터] ADD 이용건수합계1516 float NOT NULL DEFAULT 0;
ALTER TABLE [dbo].[중국인카드데이터] ADD 이용금액합계1516 float NOT NULL DEFAULT 0;
/*이용건수와 이용금액 합계데이터 업데이트*/
/*SELECT SUM을 활용해서 중국관광객카드사용데이터에 있는 이용건수 값을 모두 더한다*/
UPDATE [dbo].[중국인카드데이터] SET [이용건수합계1516] = (SELECT SUM([1516이용건수]) FROM [dbo].[중국인카드데이터] WHERE [지역_시]='전체' GROUP BY [지역_시]);
/*SELECT SUM을 활용해서 중국관광객카드사용데이터에 있는 이용금액 값을 모두 더한다*/
UPDATE [dbo].[중국인카드데이터] SET [이용금액합계1516] = (SELECT SUM([1516이용금액]) FROM [dbo].[중국인카드데이터] WHERE [지역_시]='전체' GROUP BY [지역_시])
/*뷰 만들기*/
/*한국뷰는 건당이용금액이 있으므로 해당 자료만 읍면동 합계를 내서 뷰 생성*/
CREATE VIEW [dbo].[읍면동지역별건당카드이용금액(한국뷰)] AS
(SELECT [중분류], SUM([건당이용금액]) AS '건당이용금액'
FROM [tempdb].[dbo].[한국인카드데이터]
GROUP BY [중분류])
/*중국뷰는 건당이용금액이 없으므로 건당이용금액을 만드는 작업부터 해야함*/
/*ROUND함수를 사용하여 14~15년도 건당이용금액과 15~16년도 건당 이용금액*/
/*그리고 14~16년도 전체 건당 이용금액을 만든다*/
CREATE VIEW [dbo].[읍면동지역별건당카드이용금액(중국뷰)] AS
SELECT [지역_읍면동], SUM(temp.[1415건당이용금액]) AS '1415건당이용금액', SUM(temp.[1516건당이용금액]) AS '1516건당이용금액',SUM(temp.[건당이용금액]) AS '건당이용금액'
FROM
(SELECT
[지역_읍면동],
ROUND([1415이용금액]/[1415이용건수],0) AS [1415건당이용금액],
ROUND([1516이용금액]/[1516이용건수],0) AS [1516건당이용금액],
ROUND(([1415이용금액]+[1516이용금액])/([1415이용건수]+[1516이용건수]),0) AS [건당이용금액]
FROM [dbo].[중국인카드데이터]) AS temp
GROUP BY [지역_읍면동]
/*건당이용금액이 한국인보다 중국인이 더 많은 지역을 검색. LEFT JOIN 사용*/
SELECT
[중분류],
v1.[건당이용금액] as '한국_건당이용금액',
[1415건당이용금액] as '중국_1415건당이용금액',
[1516건당이용금액] as '중국_1516건당이용금액',
v2.[건당이용금액] as '중국_건당이용금액'
FROM [dbo].[읍면동지역별건당카드이용금액(한국뷰)] as v1
LEFT JOIN [dbo].[읍면동지역별건당카드이용금액(중국뷰)] as v2
ON v1.중분류 = v2.지역_읍면동
WHERE v1.건당이용금액 < v2.건당이용금액
/*위 검색한 내용을 뷰로 작성*/
CREATE VIEW [dbo].[건당이용금액_검색결과] AS
SELECT
[중분류],
v1.[건당이용금액] as '한국_건당이용금액',
/*[1415건당이용금액] as '중국_1415건당이용금액', */
/*[1516건당이용금액] as '중국_1516건당이용금액', */
v2.[건당이용금액] as '중국_건당이용금액'
FROM [dbo].[읍면동지역별건당카드이용금액(한국뷰)] as v1
LEFT JOIN [dbo].[읍면동지역별건당카드이용금액(중국뷰)] as v2
ON v1.중분류 = v2.지역_읍면동
WHERE v1.건당이용금액 < v2.건당이용금액
지난 결과 공유.
공부에 도움이 되시길 바랍니다!