0

下面的查询返回两列 - dateOfBusiness,一个datetimesalesOnDate,一个int。这是具有区号 storeId 的一家商店每天产生的销售额。结果集由 500-600 行组成。

我想得到一个月的平均销售额,即salesOnDate 的平均值。我想使用这个 SO question 中所示的子查询。但这对我不起作用。我该怎么做呢 ?

select count(salesOnDate)
from dbo.localSales
where productName like '%juice%'
and storeId = 'MUN123'
group by dateOfBusiness

我试图这样做,但它不起作用 -

select sum(x.count)
from
(
  select  count(id) as 'count'
  from    table   
) x

附加信息 -

表结构 -

dateOfBusiness | salesOnDate
-------------------------------
2013-10-5   | 200
2013-10-6   | 100
2013-10-7   | 700    

我想对任何时间段的 salesOnDate 求和,比如一个月。

4

2 回答 2

1

您确定不想要sum(salesOnDate) 而不是count(salesOnDate) 吗? Count返回行数,sum将返回所有行值的总和。平均函数是AVG,所以你可以说:

    select 
           dateOfBusiness,storeId , 
           count(salesOnDate), sum(salesOnDate), avg(salesOnDate)
    from 
           dbo.localSales
    where 
          productName like '%juice%'
          and storeId = 'MUN123'
    group by 
          dateOfBusiness,storeId 

好的,鉴于对您问题的修改,请尝试:

select 
  storeId , dob_yr, dob_mo, count(salesOnDate), sum(salesOnDate), avg(salesOnDate)
from (
        select 
               dateOfBusiness,storeId , year(dateOfBusiness) as dob_yr, 
               month(dateOfBusiness) as dob_mo,
               salesOnDate
        from 
               dbo.localSales
        where 
              productName like '%juice%'
              and storeId = 'MUN123'
) t
group by
  storeId , dob_yr, dob_mo
于 2013-04-11T19:34:42.037 回答
1

这将为您提供每月的平均销售额以及该月的总销售额:

-- can use DATEPART instead of DATENAME if you prefer numbered months (i.e., 1 = January, 2 = February, etc.)
SELECT DATENAME(month, dateOfBusiness) [Month], SUM(salesOnDate) [TotalSales], AVG(salesOnDate) [AverageSales]
FROM dbo.localSales
WHERE productName like '%juice%'
AND storeId = 'MUN123'
GROUP BY DATENAME(month, dateOfBusiness)

查询的重要部分是DATENAME(或者DATEPART如果您使用该功能)函数,它只会从您的日期列中获取特定信息,而不是整个值。

例如,假设您有 2013 年 4 月 11 日的三条记录

   dateOfBusiness     salesOnDate
--------------------- -----------
2013-04-11 08:03:24       5
2013-04-11 11:45:17       1
2013-04-11 20:23:52       3

使用上面的查询将显示它们分组为一个月:

     Month          TotalSales      AverageSales
----------------- --------------  ----------------
     April               9               3
于 2013-04-11T19:41:28.447 回答