1

日時、15 分枠、30 分枠、1 時間枠に基づいてデータを分類する必要があります。私は1時間スロットのためにこのようなクエリを書きました、

select
    a.datetime, feederid,
    vr, vy, vb
from (
    select datetime,feederid, vr, vy, vb, tt, DENSE_RANK() OVER (
        partition by dateadd(hour, datediff(hour, 0, datetime), 0), feederid
        ORDER BY feederid,datetime
    ) rank1
    from pseb.dbo.datasource
    where 
    convert(datetime,datetime) between '2011-06-12' and '2011-06-12 23:59:00'
) a
where rank1 = 1

しかし、15 分のスロット値のデータを分割する方法がわかりません。

私のテーブルの結果セットはこのようなものです

    DATETIME           FeederID  VR     VY  VB
    2011-06-12 00:09:50 4731    199.148 0   212.69
    2011-06-12 00:05:31 4731    178.531 0   242.838
    2011-06-12 00:36:20 4731    174.622 0   239.756
    2011-06-12 01:10:03 4731    175.645 0   240.328
    2011-06-12 13:10:07 4731    196.387 76.991  241.798
    2011-06-12 18:35:46 4731    207.719 54.756  251.855

ここでは、00:00 から 15:00 分のスロットに 2 つのレコードがあり、datetime desc による上位 1 つの注文が必要です。

私がそれをするのを手伝ってください。

4

3 に答える 3

2

Either use a windowing function or a group by. The real trick is to use a sort key of a 15 minute window.

Select * from 
  (
    Select
      dateadd(
        second, -1 * datepart(second, datetime)
        , dateadd(minute, mod(datepart(minute, datetime),15) * -1, datetime)
      )
      , feederid, vr, vy, vb
      , rank() over (
        partition by dateadd(
          second
          , -1 * datepart(second, datetime)
          , dateadd(minute, mod(datepart(minute, datetime),15) * -1, datetime)
        ) order by datetime desc
      ) rnk
   ) where rnk = 1
于 2013-02-22T06:44:01.140 に答える
2

第一に、正確に、問題をより深く説明することは謙虚な要求です。

それでも、私はあなたの質問に基づいて解決策を提供しました。これを試してください。動作しているかどうかをお知らせください。

declare @s datetime 
select @s=(SELECT
CONVERT(VARCHAR(8),GETDATE(),108) AS HourMinuteSecond
)
print @s
select top 1 * from tablename where m like @s group by datetime desc
于 2013-02-22T06:45:55.063 に答える
1

最初に 15 分スロット内のすべてのレコードをフェッチし、desc を使用して列 datetime で並べ替え、フェッチされた行の一番上の行を返すために制限を 1 に設定する必要があります 。 com/od/mysqlcommands/g/Limit_sql.htm

http://www.w3schools.com/sql/sql_top.asp

于 2013-02-22T06:31:03.570 に答える