我有一张多个演出日期的门票表。基本上,它看起来像这样......
+----+---------------+--------------+-----------+
| ID | ticket_holder | ticket_buyer | show_date |
+----+---------------+--------------+-----------+
ticket_holder 和ticket_buyer 都是用户id
如果我想计算一个持票人拥有的门票总数,我可以按该持有人分组并计算行数,但我想要的统计数据不止于此。
我想知道用户购买的门票总数,他们持有多少张以及他们购买了多少场门票。
+------+---------+--------+-------+
| USER | HOLDING | BOUGHT | DATES |
+------+---------+--------+-------+
| 1 | 12 | 24 | 7 |
+------+---------+--------+-------+
| 2 | 3 | 4 | 2 |
+------+---------+--------+-------+
| 3 | 1 | 2 | 1 |
+------+---------+--------+-------+
是否可以将所有这些放在一个查询中,或者我需要做一些 php 的事情来实现它吗?
最佳答案
我会在多个查询中这样做。您不能在单个查询中按或者ticket_holder
或ticket_buyer
分组。如果您尝试 GROUP BY ticket_holder, ticket_buyer
那么它将按两 列分组,这不是您想要的。
SELECT ticket_holder, COUNT(*) AS tickets_held
FROM `a table of tickets` GROUP BY ticket_holder;
SELECT ticket_buyer, COUNT(*) as tickets_bought
FROM `a table of tickets` GROUP BY ticket_buyer;
SELECT ticket_buyer, COUNT(DISTINCT show_date) AS shows_bought
FROM `a table of tickets` GROUP BY ticket_buyer;
并非所有任务都必须在单个查询中完成!它应该由某些应用程序语言使用,这是 SQL 设计的一部分,并且您需要在应用程序中处理格式设置和显示。
关于mysql - 计算多列的分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53618537/