Skill Note

平凡なエンジニアがメモ代わりにプログラミング, インフラ, ネットワークを書き綴るブログ

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

      2020/01/09

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, 日付)

Google AdSense PC

Google AdSense PC

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

oracle
[Oracle]データベースを再構築してOracle Expressのキャラクタセットを変更する

前回の記事でCSALTERを使用したキャラクタセットの変更方法を記載しましたが、サブセットのキャラクタセットからスーパセットへの変更のみ可能でした。 この記事で …

sqlserer
[SQL Server]再帰SQLで集計する

WITH(共通テーブル式)を使って集計する WITH句とは 共通テーブル式 (CTE) は、単一の SELECT、INSERT、UPDATE、DELETE、CR …

oracle
[Oracle]トリガーの実行順序を設定する方法

FOLLOWS句を使用して実行順序を設定する 1つの表に対して同レベル(タイミング)のトリガーを複数作成することはできますが、実行順序は保証されていません。 実 …

oracle
ODP.NETをNuGetからインストールする

ODP.NETのインストール手順 Oracle 12cから公式のODP.NETがNuGetに追加されました。 この記事ではODP.NETをNuGetからインスト …

sqlserer
[SQL Server]クロス集計の方法

PIVOTを使ってクロス集計する SQL ServerでExcelのピボットテーブルのようなクロス集計をするには、PIVOT関係演算子を使って集計することができ …

oracle
[Oracle]端数処理、丸めの方法

ORACLEで数値の端数処理、数値丸めをする 数値を四捨五入する場合は、ROUND関数 数値を切り捨てる場合は、TRUNC関数 各関数の第2引数の値で、小数部、 …

sqlserer
[SQLServer]形式指定で日付を取得する方法

SQLServerで形式を指定して日付を取得する 日付形式を指定するために、CONVERT関数、または、FORMAT関数を使用します。 CONVERT関数とFO …

sqlserer
[SQL Server]IDENTITYの値を初期化する

ID値の初期化(リセット)方法 IDENTITYプロパティを設定した列のID値を初期化(リセット)する方法を記載します。 現在のID値を確認する ID値を確認す …

oracle
[Oracle]データベーストリガーの作成方法

DMLトリガーを作成する データベーストリガーの中でももっとも一般的なDMLトリガーの作成方法と簡単な使用方法を記載していきます。 トリガーとは? トリガーとは …

oracle
Oracle12cでユーザを作成する方法

SQLコマンドを使用したユーザ作成 Oracle12cからマルチテナント・アーキテクチャが採用されており、以前までの手順ではユーザが作成できません。 ここではP …