mysql - SQL 按结果计数排序

标签 mysql sql database sql-order-by

我有一个包含如下数据的表格:

Meal ID   |   Child    |  Fruit

1              Child A     Apple
2              Child B     Orange
3              Child A     Banana
4              Child A     Orange
5              Child C     Banana
6              Child A     Banana
7              Child C     Banana
8              Child A     Banana

我需要根据所吃的水果对结果进行排序,从高到低,例如如果搜索查询是香蕉,结果将显示如下:

Banana Eaters (Highest to Lowest)

Child   |   Number of Bananas eaten

Child A     3
Child C     1

我会开始:

 $sql = "SELECT * FROM meals WHERE Fruit = 'Banana'";

但我如何将独特的个人香蕉食者分类为他们自己的条目,然后按吃得最多的人对结果进行排序?

最佳答案

按 child 分组并使用条件聚合:

select child, sum(fruit = 'Banana') `Number of Bananas eaten`
from meals
group by child
order by `Number of Bananas eaten` desc 

如果您想排除没有任何香蕉的 child :

select child, sum(fruit = 'Banana') `Number of Bananas eaten`
from meals
group by child
having `Number of Bananas eaten` > 0
order by `Number of Bananas eaten` desc 

参见 demo .

关于mysql - SQL 按结果计数排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58782273/

相关文章:

sql - 为什么你会使用 count ('foo' )?

php - 如何根据给定日期更改php中的单元格颜色

sql - 如何在插入存储过程后获取自动生成的主键?

mysql - 检测sql中第一个查询是否完成然后运行第二个

mysql - SUM() 没有按名称分组,没有明确的 ID

java - 保存到数据库时浪费时间

database - phalcon 行锁定与模型

java - 加载 .jsp 文件后,是否有一种普遍接受的方法可以立即从 mysql 数据库中获取数据?

PHP PDO 停止工作

mysql - 如何安装 MySQL 二进制文件