我有一个包含如下数据的表格:
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/