关键字';集团';在SQL中取平均值
对以下语句进行分组时遇到错误。这是我的密码关键字';集团';在SQL中取平均值,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,对以下语句进行分组时遇到错误。这是我的密码 DECLARE @avg_volume int SELECT @avg_volume=ISNULL(AVG(Total_Volume),0) FROM (SELECT station_id, DATEPART(YEAR,date_time) AS YEAR, DATEPART(MONTH,date_time) AS MONTH, CONVERT(date,date_time) AS DAT
DECLARE @avg_volume int
SELECT @avg_volume=ISNULL(AVG(Total_Volume),0)
FROM
(SELECT station_id,
DATEPART(YEAR,date_time) AS YEAR,
DATEPART(MONTH,date_time) AS MONTH,
CONVERT(date,date_time) AS DATE,
DATENAME(weekday,date_time) AS weekday,
sum(volume) AS Total_volume
FROM rvtcs_data_aggregated_hourly
GROUP BY station_id,
CONVERT(date,date_time),
DATEPART(MONTH,date_time),
DATEPART(YEAR,date_time),
DATENAME(weekday,date_time))
GROUP BY station_id,
CONVERT(date,date_time),
DATEPART(MONTH,date_time),
DATEPART(YEAR,date_time),
DATENA ME(weekday,date_time)
ORDER BY DATEPART(YEAR,date_time),
DATEPART(MONTH,date_time),
CONVERT(date,date_time)
SELECT @avg_volume
我的内部查询将返回
station_id YEAR MONTH DATE weekday Total_volume
7 2013 2 2013-02-21 Thursday 192
7 2013 2 2013-02-27 Wednesday 2699
7 2013 2 2013-02-28 Thursday 196
2 2013 3 2013-03-07 Thursday 192
7 2013 3 2013-03-07 Thursday 192
我的主要表格是:
station_id date_time volume
7 2013-02-21 00:00:00.000 96
7 2013-02-21 01:00:00.000 96
7 2013-02-27 00:00:00.000 356
7 2013-02-27 00:00:00.000 410
7 2013-02-27 00:00:00.000 471
7 2013-02-27 00:00:00.000 530
7 2013-02-27 00:00:00.000 338
7 2013-02-27 00:00:00.000 211
7 2013-02-27 00:00:00.000 159
7 2013-02-27 00:00:00.000 128
7 2013-02-27 00:00:00.000 96
7 2013-02-28 00:00:00.000 96
7 2013-02-28 01:00:00.000 100
7 2013-03-07 00:00:00.000 96
2 2013-03-07 00:00:00.000 96
2 2013-03-07 01:00:00.000 96
7 2013-03-07 01:00:00.000 96
我想要的输出是:
station id year month weekday average_volume
7 2013 2 Thursday 194
您的代码
DATENAME
DATENA ME(weekday,date_time)
写为
DATENAME(weekday,date_time)
------------------------另一点------------------
必须为子查询使用名称,如
SELECT t1.yourColumn
(
select yourColumn
FROM tableABC
) t1 <you not assign name here to newly subquery created table e.g t1>
为内部查询指定别名,然后在外部表GROUPBY语句中使用该别名
(select
station_id,
DATEPART(Year,date_time) AS YEAR,
DATEPART(month,date_time) AS MONTH,
CONVERT(date,date_time) AS DATE,
DATENAME(weekday,date_time) as weekday,
sum(volume) AS Total_volume
from rvtcs_data_aggregated_hourly
group by
station_id,
CONVERT(date,date_time),
DATEPART(month,date_time),
DATEPART(Year,date_time),
DATENAME(weekday,date_time)
) AS MYJUNCTIONTABLE
另外,我在复制代码时发现了日期和名称之间的空格,请参见上面的更正 您发布的查询中有3个问题:
DATENAME
李>
From
子句中定义内部查询时,它实际上是一个“派生表”
。它们的存在范围是外部查询。外部查询一完成,派生表就消失了。因此,我们需要指定在括号内定义派生表的查询,后跟AS子句和派生表名称。(下面我把它写成'T'
)--DECLARE @avg_volume int
SELECT ISNULL(AVG(Total_Volume),0) as average_volume,
station_id,
MONTH,
YEAR,
weekday
FROM
(SELECT station_id,
DATEPART(YEAR,date_time) AS YEAR,
DATEPART(MONTH,date_time) AS MONTH,
CONVERT(date,date_time) AS DATE,
DATENAME(weekday,date_time) AS weekday,
sum(volume) AS Total_volume
FROM rvtcs_data_aggregated_hourly
GROUP BY station_id,
CONVERT(date,date_time),
DATEPART(MONTH,date_time),
DATEPART(YEAR,date_time),
DATENAME(weekday,date_time)) AS T
WHERE WEEKDAY = 'Thursday' AND MONTH=2
GROUP BY station_id,
MONTH,
YEAR,
weekday
ORDER BY YEAR,
MONTH
SQL FIDDLE:
这是什么:DATENA ME(工作日,日期时间)你为什么问另一个与之完全相同的问题。你的电台id 2去了哪里?你的星期三在哪里消失了?只是因为我没有得到答案…很简单@raging@bibinmatthew字体这并不意味着你应该发布另一个问题,是吗?当你发布一个问题的时候,给它一些时间。只是抄写的时候弄错了。沙巴:(我还是没有得到想要的结果:(@deepshika:你想做什么?只需运行内部查询和整个..都返回相同的:-/现在编辑查询检查..@deepshika:使用where条件,如果我有其他星期的数据怎么办?我需要按工作日对其进行分组,我给出了一个示例。一个月和一年中每个工作日的平均容量在什么情况下才能解决你的问题,不是吗??
--DECLARE @avg_volume int
SELECT ISNULL(AVG(Total_Volume),0) as average_volume,
station_id,
MONTH,
YEAR,
weekday
FROM
(SELECT station_id,
DATEPART(YEAR,date_time) AS YEAR,
DATEPART(MONTH,date_time) AS MONTH,
CONVERT(date,date_time) AS DATE,
DATENAME(weekday,date_time) AS weekday,
sum(volume) AS Total_volume
FROM rvtcs_data_aggregated_hourly
GROUP BY station_id,
CONVERT(date,date_time),
DATEPART(MONTH,date_time),
DATEPART(YEAR,date_time),
DATENAME(weekday,date_time)) AS T
WHERE WEEKDAY = 'Thursday' AND MONTH=2
GROUP BY station_id,
MONTH,
YEAR,
weekday
ORDER BY YEAR,
MONTH