首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助进行查询

需要帮助进行查询
EN

Stack Overflow用户
提问于 2013-04-11 19:26:06
回答 2查看 59关注 0票数 0

下面的查询返回两列:dateOfBusiness,a datetimesalesOnDateint。这是一家商店每天产生的销售额,该商店的区号为storeId。结果集由500-600行组成。

我想要一个月的平均销售额(做salesOnDate的平均数).我想使用子查询as shown in this SO question。但这对我没有用。我该怎么做?

代码语言:javascript
复制
select count(salesOnDate)
from dbo.localSales
where productName like '%juice%'
and storeId = 'MUN123'
group by dateOfBusiness

我试过这样做,但不管用-

代码语言:javascript
复制
select sum(x.count)
from
(
  select  count(id) as 'count'
  from    table   
) x

附加信息-

表结构-

代码语言:javascript
复制
dateOfBusiness | salesOnDate
-------------------------------
2013-10-5   | 200
2013-10-6   | 100
2013-10-7   | 700    

我想把salesOnDate相加一段时间,比如说一个月。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-11 19:41:28

这将给出按月平均销售额以及该月份的总销售额:

代码语言:javascript
复制
-- 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 ),它将只从date列获取特定信息,而不是整个值。

例如,拉特说你有2013年4月11日的三项记录

代码语言:javascript
复制
   dateOfBusiness     salesOnDate
--------------------- -----------
2013-04-11 08:03:24       5
2013-04-11 11:45:17       1
2013-04-11 20:23:52       3

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

代码语言:javascript
复制
     Month          TotalSales      AverageSales
----------------- --------------  ----------------
     April               9               3
票数 1
EN

Stack Overflow用户

发布于 2013-04-11 19:34:42

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

代码语言:javascript
复制
    select 
           dateOfBusiness,storeId , 
           count(salesOnDate), sum(salesOnDate), avg(salesOnDate)
    from 
           dbo.localSales
    where 
          productName like '%juice%'
          and storeId = 'MUN123'
    group by 
          dateOfBusiness,storeId 

好吧,考虑到你问题的编辑,试着:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15957159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档