1

我是 SQL 新手,在这里遇到问题。我想我了解我可能需要做的事情,但不了解它的语法。基本上我每小时有大量的计数,我需要将所有这些每小时计数并将它们连接在一起以按天而不是按小时显示,然后取整天计数的平均值。我还需要弄清楚这些日子中的哪一天是工作日并排除周末......我认为我做得正确,但我可能错了。如果有更有效的方法,请告诉我!

  SELECT DatePart(WEEKDAY, [EVENT_TIME]) as DayoftheWeek
,[EVENT_TIME]
,[COUNT]
,[CLASS_SCHEME_ID]
,[CLASS_NUM]
,[ERROR_CODE]
,[REC_ENTRY_TIME]
FROM [SAMPLE_DATA].[dbo].[651511]
WHERE [EVENT_TIME] >= '2009-01-01' AND DatePart(WEEKDAY, [EVENT_TIME]) >=2 AND DatePart(WEEKDAY, [EVENT_TIME]) <= 6
GROUP BY ,[EVENT_TIME]
,[COUNT]
,[CLASS_SCHEME_ID]
,[CLASS_NUM]
,[ERROR_CODE]
,[REC_ENTRY_TIME]
GO

我一直在阅读关于我可能需要做的事情……也许是关于选角的事情?我不确定。

4

1 回答 1

1

不确定您是否想要比 Day (即类)更低的粒度,但如果不是,我认为这应该可以帮助您。如果您希望结果的粒度更细,请将这些字段添加到您的选择和分组依据。

这还将考虑@@DateFirst 的任何非默认设置

SELECT
    DatePart(Weekday, event_time) as DayName,
    avg(count) as DayAvg
FROM
    sample_date.dbo.651511
WHERE 
    event_time >= '2009-01-01' and
    (DATEPART(dw, date_created) + @@DATEFIRST) % 7) NOT IN (0, 1)
Group by
    DatePart(Weekday, event_time)
于 2013-03-04T05:31:35.400 回答