SQL Q&A

 

日時範囲でグループ化された最大値の取得について質問~

任意の時刻にデータをモニタリングしているシステムがあり、データがMS SQL Serverに保存されています。

int ID
int DeviceID 端末番号
int DeviceValue 計測値
smalldatetime DeviceTime 日時

これを、任意の日時範囲を指定し、一日単位で集計された、端末ID、計測値の最大値という形式で取得したく思います。

計測日 端末番号 計測最大値
2014/01/01 10002 34543
2014/01/01 10003 33211
2014/01/02 10002 23450
...
...

DBが得意でないため、困っています。
どなたかお助けいただけないでしょうか?
このエントリーをはてなブックマークに追加
2014-04-14 17:53:50   1358

コメント

2014年 04月 22日 (18:38)
こんにちは。
イノ(inno)です。

下記に例文のSQLを作成しましたので、テストしてみてください。
GROUP BYを使えば簡単にできます。

-- テストテーブル作成
CREATE TABLE dbo.TempData
(
ID int
, DeviceID int
, DeviceValue int
, DeviceTime smalldatetime
)

-- テストデータ登録
INSERT INTO dbo.TempData
SELECT 1, 10002, 34543, '2014/01/01 10:00' UNION ALL
SELECT 2, 10003, 33211, '2014/01/01 10:00' UNION ALL
SELECT 3, 10002, 23450, '2014/01/01 11:00' UNION ALL
SELECT 4, 10003, 35000, '2014/01/01 11:00' UNION ALL
SELECT 5, 10002, 32323, '2014/01/02 10:00' UNION ALL
SELECT 6, 10003, 53453, '2014/01/02 10:00' UNION ALL
SELECT 7, 10002, 23235, '2014/01/02 11:00' UNION ALL
SELECT 8, 10003, 65655, '2014/01/02 11:00' UNION ALL
SELECT 9, 10002, 12134, '2014/01/03 10:00' UNION ALL
SELECT 10, 10003, 42232, '2014/01/03 10:00' UNION ALL
SELECT 11, 10002, 22334, '2014/01/03 11:00' UNION ALL
SELECT 12, 10003, 34313, '2014/01/03 11:00'

-- 結果SQL
SELECT CONVERT(CHAR(10), DeviceTime, 111) AS DeviceTime, DeviceID, MAX(DeviceValue) AS MaxDeviceValue
FROM dbo.TempData
WHERE DeviceTime >= '2014/01/01' AND DeviceTime < '2014/01/03'
GROUP BY CONVERT(CHAR(10), DeviceTime, 111), DeviceID
ORDER BY CONVERT(CHAR(10), DeviceTime, 111), DeviceID

-- 実行結果
DeviceTime DeviceID MaxDeviceValue
2014/01/01 10002 34543
2014/01/01 10003 35000
2014/01/02 10002 32323
2014/01/02 10003 65655

SQL Server2005 復元の時、エラーが検出されました  (2)

-.日付:2014-04-21   カテゴリ : -   閲覧数:1703

nvarcharとdatetimeで作成された日付の抽出方法について  (1)

-.日付:2014-04-16   カテゴリ : -   閲覧数:1385

日時範囲でグループ化された最大値の取得について質問~  (1)

-.日付:2014-04-14   カテゴリ : -   閲覧数:1358

SQL 特定のカラムが最大値のレコード取得  (2)

-.日付:2014-04-08   カテゴリ : -   閲覧数:1513

SQL文「DISTINCT」の「ORDER BY」について  (2)

-.日付:2014-04-07   カテゴリ : -   閲覧数:1391

SQLサーバーでテキスト編集するときの「改行」コード挿入  (2)

-.日付:2014-04-04   カテゴリ : -   閲覧数:1646

SQLServerで文字列の末尾からある位置で取出するには?  (8)

-.日付:2014-04-04   カテゴリ : -   閲覧数:2185

文字列のあるキーワードから開始する部分の抽出  (2)

-.日付:2014-04-03   カテゴリ : -   閲覧数:1333

SQL Serverのバックアップについて  (2)

-.日付:2014-04-02   カテゴリ : -   閲覧数:1356

Copyright © 2015 INNOYA.COM All rights reserved. RSS