cnd*_*cnd 159 sql t-sql group-by sql-server-2008
就像我一样
SELECT [Date]
FROM [FRIIB].[dbo].[ArchiveAnalog]
GROUP BY [Date]
Run Code Online (Sandbox Code Playgroud)
我该如何指定小组期?
MS SQL 2008
第二次编辑
我尝试着
SELECT MIN([Date]) AS RecT, AVG(Value)
FROM [FRIIB].[dbo].[ArchiveAnalog]
GROUP BY (DATEPART(MINUTE, [Date]) / 10)
ORDER BY RecT
Run Code Online (Sandbox Code Playgroud)
将%10更改为/ 10.是否可以在没有毫秒的情况下进行日期输出?
cnd*_*cnd 200
终于完成了
GROUP BY
DATEPART(YEAR, DT.[Date]),
DATEPART(MONTH, DT.[Date]),
DATEPART(DAY, DT.[Date]),
DATEPART(HOUR, DT.[Date]),
(DATEPART(MINUTE, DT.[Date]) / 10)
Run Code Online (Sandbox Code Playgroud)
Mic*_*ael 57
我参加派对的时间已经很晚了,但这并没有出现在任何现有的答案中:
GROUP BY DATEADD(MINUTE, DATEDIFF(MINUTE, '2000', date_column) / 10 * 10, '2000')
Run Code Online (Sandbox Code Playgroud)
10
和MINUTE
条件是可以改变的任何号码并且DATEPART
分别.DATETIME
值,意思是:
SELECT
将它包含在语句中将为您的输出提供一个列,其中包含在您指定的级别截断的漂亮输出.SELECT DATEADD(MINUTE, DATEDIFF(MINUTE, '2000', aa.[date]) / 10 * 10, '2000')
AS [date_truncated],
COUNT(*) AS [records_in_interval],
AVG(aa.[value]) AS [average_value]
FROM [friib].[dbo].[archive_analog] AS aa
GROUP BY DATEADD(MINUTE, DATEDIFF(MINUTE, '2000', aa.[date]) / 10 * 10, '2000')
ORDER BY [date_truncated]
Run Code Online (Sandbox Code Playgroud)
tzu*_*zup 17
在T-SQL中,您可以:
SELECT [Date]
FROM [FRIIB].[dbo].[ArchiveAnalog]
GROUP BY [Date], DATEPART(hh, [Date])
Run Code Online (Sandbox Code Playgroud)
要么
通过分钟使用 DATEPART(mi, [Date])
要么
使用10分钟DATEPART(mi, [Date]) / 10
(像蒂莫西建议的那样)
Tim*_*uri 13
间隔10分钟,你会的
GROUP BY (DATEPART(MINUTE, [Date]) / 10)
Run Code Online (Sandbox Code Playgroud)
正如tzup和Pieter888已经提到的......做一个小时的间隔,只是
GROUP BY DATEPART(HOUR, [Date])
Run Code Online (Sandbox Code Playgroud)
应该是这样的
select timeslot, count(*)
from
(
select datepart('hh', date) timeslot
FROM [FRIIB].[dbo].[ArchiveAnalog]
)
group by timeslot
Run Code Online (Sandbox Code Playgroud)
(不是100%肯定语法 - 我更像是一个Oracle类型的人)
在Oracle中:
SELECT timeslot, COUNT(*)
FROM
(
SELECT to_char(l_time, 'YYYY-MM-DD hh24') timeslot
FROM
(
SELECT l_time FROM mytab
)
) GROUP BY timeslot
Run Code Online (Sandbox Code Playgroud)
小智 6
作者给出的原始答案非常好.只是为了扩展这个想法,你可以做类似的事情
group by datediff(minute, 0, [Date])/10
Run Code Online (Sandbox Code Playgroud)
这将允许你分组更长的时间,然后60分钟,比如720,这是半天等.
对于 MySQL:
GROUP BY
DATE(`your_date_field`),
HOUR(`your_date_field`),
FLOOR( MINUTE(`your_date_field`) / 10);
Run Code Online (Sandbox Code Playgroud)