Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关键字';集团';在SQL中取平均值_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

关键字';集团';在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个问题:

  • 正如大家所指出的,正确的标识符DATENA ME指向
    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