假设我有以下表格:
我希望找到每个人最常吃的食物。因此,期望的结果如下:
+-----------------------+----------------+
| PERSON | ATE |
+-----------------------+----------------+
| Joe | Chicken |
| Joe | Chicken |
| Joe | Chicken |
| Joe | Tuna |
| Joe | Tuna |
| Joe | Chicken |
| Joe | Tuna |
| Joe | Chicken |
| Joe | Tuna |
| Joe | Tuna |
| Joe | Tuna |
| Joe | Chicken |
| Joe | Tuna |
| Joe | Tuna |
| Joe | Chicken |
| Joe | Tuna |
| Joe | Tuna |
| Joe | Tuna |
| Rob | Chicken |
| Rob | Tuna |
| Rob | Chicken |
| Rob | Chicken |
| Rob | Chicken |
| Rob | Chicken |
| Jonathan | Tuna |
| Jonathan | Tuna |
| Jonathan | Chicken |
| Jonathan | Tuna |
| Jonathan | Chicken |
+-----------------------+----------------+
我希望找到每个人最常吃的食物。因此,期望的结果如下:
+-----------------------+----------------+
| PERSON | ATE |
+-----------------------+----------------+
| Joe | Tuna |
| Rob | Chicken |
| Jonathan | Tuna |
+-----------------------+----------------+
自然地,我会使用GROUP BY(人名)进行分组。之后,我需要在每个组中找到最常吃的物品。如果它们是数字,那么很容易,因为我可以使用MAX函数,但是我不知道如何从一堆字符串中挑选出最受欢迎的字符串。
你会如何在SQL中完成我想做的事情?
row_number
很简单,这只在MySQL版本8及以上版本中支持-https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html#function_row-number。 - FuzzyTree