mysql - 计算多列的分组

标签 mysql 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 的事情来实现它吗?

最佳答案

我会在多个查询中这样做。您不能在单个查询中按或者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 设计的一部分,并且您需要在应用程序中处理格式设置和显示。

关于mysql - 计算多列的分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53618537/

相关文章:

mysql - 查找在 CakePHP 中出现 N 次的模型的所有不同字段值

c - 一个文件中注释的字符数(C编程)

mysql - 排序规则 - MySQL 中排序规则的目的是什么。

php - 这可能吗 ? SQL 运算符 < && !=

mysql - 获取具有特定 ID 的多行?

sql - 如何根据分组来计算重复项以及查看值是否存在于同一字段值中?

mysql - SQL 查询。需要对两列中的值的组合进行 GROUP BY

java - java中通过多部分表单数据上传时如何知道文件数

mysql - 如何在一个查询中执行两次 COUNT(*) 获取?

mysql - 如何停止正在进行的回滚?