ビッグデータシステムなど、大量のデータを解析する場合、JAVAやC#では計算元のデータを読込むだけで膨大な時間がかかってしまうので、最近では数十テラのデータであってもDBにインポートしてから、SQLで分析するのが主流になっています。
以下は、新しいデータが1つ前のデータに対して、どれだけ値が上昇したのか、その角度を求めるSQLServerのT-SQLです。データが増える度にリアルタイムでこのSQLを実行すると、角度から、データの急激な動きを視覚的に把握できるようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
DECLARE @StartDate DATETIME = '2015-08-29 06:45:00.000'; DECLARE @現在の値 FLOAT = 0; DECLARE @1つ前の値 FLOAT = 0; DECLARE cursor_DataHistory CURSOR FOR SELECT TOP 2 [値] FROM [DataHistory] WHERE [StartDate] <= @StartDate ORDER BY [StartDate] DESC; open cursor_DataHistory; FETCH NEXT FROM cursor_DataHistory INTO @現在の値; FETCH NEXT FROM cursor_DataHistory INTO @1つ前の値; CLOSE cursor_DataHistory; DEALLOCATE cursor_DataHistory; SELECT (ATAN((@現在の値 - @1つ前の値) / 1) * 180 / PI()) AS 上昇角度; |
コメント