我有一个交易表,我想编写一个查询,用于计算每天每个位置的交易数量。我编写了以下查询,该查询仅计算在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"格式列出,这就是为什么我在查询中将其格式更改为仅按日显示。我试图做的是什么?我很感激帮助。
答案 0 :(得分:0)
你快到了,你所遗漏的只是GROUP BY
内的日期
当您编写诸如此类的SQL脚本时,您的问题实际上提供了答案
计算 <每日
COUNT(S.StoreLocation)
GROUP BY
子句GROUP BY
条款。
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