Database

[SQL Server]データを期間別に集計する

スポンサーリンク

SQL Serverで集計表を出力

日付をDATETIME型で管理している場合、CONVERT関数、DATEPART関数を使って、日、週、月、年別の集計結果を出力することができます。

 icon-chevron-right 週別の集計は日曜はじまりなので注意する

SQL Server 2016の教科書 基礎から実践まで学べる 開発編/松本美穂/松本崇博【合計3000円以上で送料無料】

集計方法

日次集計

-- 日次(CONVERT)
SELECT CONVERT(VARCHAR, 日付, 111)
     , COUNT(*)
FROM テーブル名
GROUP BY CONVERT(VARCHAR, 日付, 111)

-- 日次(DATEPART)
SELECT DATEPART(YEAR, 日付)
     , DATEPART(MONTH, 日付)
     , DATEPART(DAY, 日付)
     , COUNT(*)
FROM テーブル名
GROUP BY DATEPART(YEAR, 日付)
       , DATEPART(MONTH, 日付)
       , DATEPART(DAY, 日付)

週次集計

-- 週次(DATEPART) ※日曜はじまり
SELECT DATEPART(WEEK, 日付)
     , COUNT(*)
FROM テーブル名
GROUP BY DATEPART(WEEK, 日付)

月次集計

-- 月次(CONVERT)
SELECT SUBSTRING(CONVERT(VARCHAR, 日付, 111), 1, 7)
     , COUNT(*)
FROM テーブル名
GROUP BY SUBSTRING(CONVERT(VARCHAR, 日付, 111), 1, 7)

-- 月次(DATEPART)
SELECT DATEPART(YEAR, 日付)
     , DATEPART(MONTH, 日付)
     , COUNT(*)
FROM テーブル名
GROUP BY DATEPART(YEAR, 日付)
       , DATEPART(MONTH, 日付)

年次集計

-- 年次(CONVERT)
SELECT SUBSTRING(CONVERT(VARCHAR, 日付, 111), 1, 4)
     , COUNT(*)
FROM テーブル名
GROUP BY SUBSTRING(CONVERT(VARCHAR, 日付, 111), 1, 4)

-- 年次(DATEPART)
SELECT DATEPART(YEAR, 日付)
     , COUNT(*)
FROM テーブル名
GROUP BY DATEPART(YEAR, 日付)
タイトルとURLをコピーしました