我有一个带购买表的mysql数据库:
1 Deal Certificate int(3)
2 Purchase Price decimal(4,2)
3 Purchase Date timestamp
4 Serial Number varchar(9)
5 Name varchar(23)
6 Email varchar(42)
在我运行以下查询之后:
SELECT *
FROM `PURCHASES`
WHERE `Purchase Date`
between '2012-01-01' and '2012-01-31'
order by email
我看到结果:
345 36.00 2012-01-17 16:42:33 7757-3097 T T [email protected]
327 6.00 2012-01-05 10:40:57 0223-3945 R T [email protected]
329 12.00 2012-01-02 04:54:45 1087-7072 P B [email protected]
294 7.00 2012-01-02 04:59:11 4144-2426 P B [email protected]
285 6.00 2012-01-02 05:12:39 8027-1641 P B [email protected]
1079 21.00 2012-01-02 05:05:07 2447-7971 P B [email protected]
331 10.00 2012-01-02 19:14:38 3916-5434 y a [email protected]
我的问题是,我将如何在1行中写一个查询该月每个人的购买总数,以便得到类似以下的结果?
345 36.00 2012-01-17 16:42:33 7757-3097 T T [email protected]
327 6.00 2012-01-05 10:40:57 0223-3945 R T [email protected]
329 46.00 2012-01-02 04:54:45 1087-7072 P B [email protected]
331 10.00 2012-01-02 19:14:38 3916-5434 y a [email protected]
请注意,所有用户P B的交易总计为一行。
谢谢
最佳答案
实际上,您的示例不合适,或者您缺少有关问题本身的信息。回答此问题:如果您想要一条线路,包括您想要该线路的总序列号?拥有详细信息的汇总是常识(只要您不指定诸如and also I want the most recent purchase date for each email
之类的条件)。
另一种看待这种情况的方式是:您采用什么标准来选择该序列号1087-7072
而不是2447-7971
来选择[email protected]
?相同的问题适用于字段1和3。
因此,据我了解,这对您有用(当然,最少)是:
36.00 T T [email protected]
6.00 R T [email protected]
46.00 P B [email protected]
10.00 y a [email protected]
您可以通过以下查询获得此信息(根据您的表模式,我假设
name
具有这些值P B
):select sum(`Purchase Price`) as total_sum, name, email from purchases
where `Purchase Date` between '2012-01-01' and '2012-01-31'
group by email, name
order by email
让我知道这是否是您(实际上)正在寻找的东西。