MySQLi计算多个列的分组

时间:2018-12-04 17:33:32

标签: mysql mysqli group-by count

我有一张票证表显示多个演出日期。基本上看起来像这样...

+----+---------------+--------------+-----------+
| 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东西才能实现?

1 个答案:

答案 0 :(得分:1)

我会在多个查询中执行此操作。您无法在单个查询中根据需要 ticket_holderticket_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设计的一部分,它应由某些应用程序语言使用,并且应该处理格式并在应用程序中显示。