在SQL中按位置计算?
问题描述:
我有一个交易表,我想写一个查询为每天的每个位置的交易数。我已经写了下面的查询只计算交易总额为这就是WHERE子句中指定的时间段:在SQL中按位置计算?
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
为了澄清,表中的每一行是一个交易,所以我只需要统计按地点和按天排列的行数。我希望这样做,因为我需要按地点回顾这些交易,回溯多年,这将是数千万笔交易。
我想对输出数据是这个样子:
日期 | 店铺位置 | 交易记录
08-01-2017 |位置1 | 500
08-02-2017 |位置1 | 450
08-03-2017 |位置1 | 600
...对于超过100个位置中的每个位置和指定的时间段等等等等。
另请注意,我们的日期以格式“2017-08-01 00:00:00”列在表格中,这就是为什么我在查询中更改格式以便每天显示。我正在尝试做什么?我会很感激帮助。
答
就快成功了,你缺少的是里面的日期之前,您GROUP BY
当你写一个SQL脚本,像这样的,你的问题实际上提供了答案
计数 S的数交易每个位置通过日
-
个
-
计数交易的号码是您的聚合函数
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
添加DATE_FORMAT(T.Date, '%间%D-%Y')到组由 – twoleggedhorse
看到的是https://meta.stackoverflow .com/questions/333952/why-should-i-provide-an-mcve-for-what-seem-to-to-what-seems-to-very-simple-sql-query – Strawberry
@Strawberry我在写一个sql小提琴的例子,但在我的手机,需要年龄的过程,所以我给用户的东西尝试在此期间 – twoleggedhorse