按日计算SQL中的位置?

时间:2017-09-29 20:15:41

标签: mysql group-by count

我有一个交易表,我想编写一个查询,用于计算每天每个位置的交易数量。我编写了以下查询,该查询仅计算在Where子句中指定的时间段的总交易次数:

    Select Date_Format(T.Date,'%m-%d-%y') as Date, S.StoreLocation, 
    Count(S.StoreLocation) as Transactions
    From Transactions T
    Inner Join Stores S on T.StoreCode=S.StoreCode
    Where T.Date Between '2017-08-01 00:00:00' and '2017-08-31 23:59:59'
    Group By S.StoreLocation

为了澄清,表中的每一行都是一个事务,所以我只需按位置和按天计算行数。我希望这样做是因为我需要按日计算这些交易,这些交易将持续多年,这将是数千万笔交易。

我希望输出数据看起来像这样:

日期 | StoreLocation |的交易
08-01-2017 |位置1 | 500个
08-02-2017 |位置1 | 450个
08-03-2017 |位置1 | 600

......等等超过100个地点和指定时间段的每一个等等。

另请注意,我们的日期在表格中以#34; 2017-08-01 00:00:00"格式列出,这就是为什么我在查询中将其格式更改为仅按日显示。我试图做的是什么?我很感激帮助。

1 个答案:

答案 0 :(得分:0)

你快到了,你所遗漏的只是GROUP BY内的日期 当您编写诸如此类的SQL脚本时,您的问题实际上提供了答案

  计算 <每日
  1. 计算交易次数是您的汇总函数COUNT(S.StoreLocation)
  2. 每个位置的
  3. 是第一个GROUP BY子句
  4. 按日是第二个GROUP BY条款。
  5. SELECT   Date_Format(T.Date,'%m-%d-%y') AS Date
            ,S.StoreLocation
            ,COUNT(S.StoreLocation) AS Transactions
    FROM     Transactions T
             INNER JOIN Stores S
                 ON T.StoreCode = S.StoreCode
    WHERE    T.Date BETWEEN '2017-08-01 00:00:00' AND '2017-08-31 23:59:59'
    GROUP BY S.StoreLocation
            ,Date_Format(T.Date,'%m-%d-%y')
    

    可在此处找到一个工作示例:SQL Fiddle