SQLServer2008-按时间范围分组
我有一个带有TransactionTime列的事务表: 我如何编写一个查询,该查询为我提供一天中在特定时间段之间发生的事务数。例如,从上午9:00开始到晚上9:00,间隔3小时 样本输出:SQLServer2008-按时间范围分组,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个带有TransactionTime列的事务表: 我如何编写一个查询,该查询为我提供一天中在特定时间段之间发生的事务数。例如,从上午9:00开始到晚上9:00,间隔3小时 样本输出: 不清楚您想做什么,但这应该可以让您开始——一份按小时细分的总数列表: SELECT HOUR(TransactionTime), COUNT(*) AS Num_Transactions FROM YOUR_TABLE_NAME GROUP BY HOUR(TransactionTime) 如果您希望每3
不清楚您想做什么,但这应该可以让您开始——一份按小时细分的总数列表:
SELECT HOUR(TransactionTime), COUNT(*) AS Num_Transactions
FROM YOUR_TABLE_NAME
GROUP BY HOUR(TransactionTime)
如果您希望每3小时使用一次,请使用
HOUR(TransactionTime)/3
作为您的分组,就像正常情况一样。谢谢您的所有输入。我得出了以下解决方案:
SELECT Datename(weekday, time) AS weekday,
( ( Datepart(hour, time) / 3 ) - 3 ) AS segment,
Count(*) AS num_transactions
FROM "transaction"
GROUP BY Datename(weekday, time),
( ( Datepart(hour, time) / 3 ) - 3 )
ORDER BY CASE Datename(weekday, time)
WHEN 'Monday' THEN 1
WHEN 'Tuesday' THEN 2
WHEN 'Wednesday' THEN 3
WHEN 'Thursday' THEN 4
WHEN 'Friday' THEN 5
WHEN 'Saturday' THEN 6
WHEN 'Sunday' THEN 7
END,
( ( Datepart(hour, time) / 3 ) - 3 );
您的示例没有意义——什么是段?到目前为止您尝试了什么查询?基本上,您需要做的是计算它所属的间隔并对其进行分组。您可以使用ROW_NUMBER()OVER(PARTITION BY…)生成
段
列。