假设我有以下订单表,并且正在检索所有失败的订单.
+----+------------------+-------+--------+
| id | email | total | status |
+----+------------------+-------+--------+
| 1 | john@example.com | 39.99 | failed |
|----|------------------|-------|--------+
| 2 | john@example.com | 39.99 | failed |
|----|------------------|-------|--------+
| 3 | pete@example.com | 19.99 | failed |
+----+------------------+-------+--------+
我需要获取失败订单的总数以及它们的总数,但是每个重复行仅一次(当同一封电子邮件和总数相同时,行被视为重复)
目前,我有一个非常简单的查询,可以查询所有失败订单的总数.我不确定如何修改它以返回所需的数据(我尝试弄乱DISTINCT和GROUP BY无济于事.)
SELECT COUNT(*) AS `count`, SUM(`total`) AS `grand_total` FROM `orders` WHERE `status` = 'failed';
哪个返回:
+-------+-------------+
| count | grand_total |
+-------+-------------+
| 3 | 99.97 |
+-------+-------------+
我想返回的结果是:
+-------+-------------+
| count | grand_total |
+-------+-------------+
| 2 | 59.98 |
+-------+-------------+
(由于电子邮件和总计的值与第一行中的值相同,因此结果中将省略第二行)
是否可以在单个查询中检索此数据?