mysql - 获取 "Count(*)"与 "GROUP BY"中所有项目数的百分比

假设我需要“某个类别的可用项目数”与“所有项目数”的比率。请考虑这样的 MySQL 表:

/*

mysql> select * from Item;
+----+------------+----------+
| ID | Department | Category |
+----+------------+----------+
|  1 | Popular    | Rock     |
|  2 | Classical  | Opera    |
|  3 | Popular    | Jazz     |
|  4 | Classical  | Dance    |
|  5 | Classical  | General  |
|  6 | Classical  | Vocal    |
|  7 | Popular    | Blues    |
|  8 | Popular    | Jazz     |
|  9 | Popular    | Country  |
| 10 | Popular    | New Age  |
| 11 | Popular    | New Age  |
| 12 | Classical  | General  |
| 13 | Classical  | Dance    |
| 14 | Classical  | Opera    |
| 15 | Popular    | Blues    |
| 16 | Popular    | Blues    |
+----+------------+----------+
16 rows in set (0.03 sec)

mysql> SELECT Category, COUNT(*) AS Total
    -> FROM Item
    -> WHERE Department='Popular'
    -> GROUP BY Category;
+----------+-------+
| Category | Total |
+----------+-------+
| Blues    |     3 |
| Country  |     1 |
| Jazz     |     2 |
| New Age  |     2 |
| Rock     |     1 |
+----------+-------+
5 rows in set (0.02 sec)

*/

我需要的基本上是一个类似于这个的结果集:

/*
+----------+-------+-----------------------------+
| Category | Total | percentage to the all items | (Note that number of all available items is "9")
+----------+-------+-----------------------------+
| Blues    |     3 |                          33 | (3/9)*100
| Country  |     1 |                          11 | (1/9)*100
| Jazz     |     2 |                          22 | (2/9)*100
| New Age  |     2 |                          22 | (2/9)*100
| Rock     |     1 |                          11 | (1/9)*100
+----------+-------+-----------------------------+
5 rows in set (0.02 sec)

*/

如何在单个查询中实现这样的结果集?

提前致谢。

最佳答案

SELECT Category, COUNT(*) AS Total , (COUNT(*) / (SELECT COUNT(*) FROM Item WHERE Department='Popular')) * 100 AS 'Percentage to all items', 
FROM Item
WHERE Department='Popular'
GROUP BY Category;

我不确定 MySql 语法,但您可以使用如图所示的子查询。

关于mysql - 获取 "Count(*)"与 "GROUP BY"中所有项目数的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3061655/

相关文章:

java - 使用 Java 通过 SSH 连接到远程 MySQL 数据库

php - 将大量点击记录到 MySQL 数据库中的最佳实践

php - MySQL 查询随机滞后

sql - BIGINT(8) 是 MySQL 可以存储的最大整数吗?

mysql - 如何在 MySQL 的命令行中显示变量的值?

mysql - 如何让 MySQL 数据库完全在内存中运行?

mysql - 如何同步开发和生产数据库

mysql - org.hibernate.AssertionFailure : null id i

mysql - 查询以确定数据库中表的大小? (mysql)

mysql - ON UPDATE RESTRICT 有什么作用?