回答

收藏

SQL SERVER-按n分钟间隔对记录进行分组

技术问答 技术问答 61 人阅读 | 0 人回复 | 2023-09-13

我有一个这样的表:  m3 I" J' N4 B% j& a
     [SDate - DateTime]              [Value - Decimal]1 k' ?! G9 {; ?& i' X
    2010-11-16 10:32:22                     1
; |7 R& I3 p+ @* y- N    2010-11-16 10:58:08                     2
3 S% `: C: i5 n我需要一个查询以n分钟的间隔对记录进行分组。
& U7 v5 Y# |7 @* q! n例如,输出(按60分钟分组):* u1 u2 G1 `: }+ z" u; O) l4 s
    2010-11-16 10:10:00   avg(Value)
/ j# |1 W5 L. }2 j5 k    2010-11-16 10:11:00   avg(Value)
' q$ B) H5 M" A1 g/ `8 k+ a7 U    2010-11-16 10:12:00   avg(Value)* q3 {% {# s2 x8 M8 I& d* }+ S4 b
到目前为止,由于间隔介于0到60分钟之间,因此我一直在使用此查询按10分钟间隔进行分组:$ u9 t  A; x! t8 R, j6 H4 f' ~
...+ l5 W1 n9 H7 u5 V- R
GROUP BY, V' s1 ~1 g6 W; X2 a9 F; I( n
DATEPART(YEAR, SDate),4 u+ g4 i4 Y, c' X7 {' {+ Q
DATEPART(MONTH, SDate),! C$ @5 q9 t: B" [' V" P5 v) P
DATEPART(DAY, SDate),
% P4 G6 T  t5 d5 L: fDATEPART(HOUR, SDate),
- t. y. U/ D: N5 I" E* z(DATEPART(MINUTE, SDate) / 10)0 |, ~* z% O' J2 ?+ M, r
但是现在间隔可以是例如 125436758 分钟。
0 c- [) R4 o  V8 `我无法创建新表,并且用户定义的间隔必须为n分钟。我正在使用SQL SERVER2012。谢谢。) _6 K  G6 l$ z0 }' v+ l0 P
                ( w: T" K" ~5 f# a, f3 d$ i
解决方案:% _4 |8 |# T/ O( P, z& _
                1 ]/ B. p- f* t
' ]" \9 \: k3 y3 o9 s
" B' o6 @6 X  p# ~$ Z
                GROUP BY 8 L4 N8 c& N0 T' U9 c" }9 m
...
  O, M1 h$ o. |4 v( C(DATEDIFF(MINUTE, 0, SDate) / @n)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则