在 SQL 中给定另一列的值,查找某一列最常见的值
在表包含多个列的场景中,例如“country”、“food_id”和“eaten”,一项常见任务是确定其中一列(“food_id”)最常出现的值另一列(“国家/地区”)的每个唯一值。
问题中提到的一种方法涉及创建临时表并执行多个子查询来计算计数、查找最大计数并检索相应的“ food_id”值。虽然这个方法很实用,但看起来很麻烦。
幸运的是,PostgreSQL 9.4 引入了一个更简单的解决方案:mode() 函数。此函数提供了一种有效的方法来查找分组表达式定义的每个组中指定列的最常见值。
要使用 mode() 函数执行此任务,可以使用以下 SQL 查询:
SELECT mode() within group (order by food_id) FROM munch GROUP BY country
此查询利用 mode() 函数来计算每个唯一“国家”值的最常见“food_id”值。 WITHIN GROUP (ORDER BY food_id) 子句确保 mode() 函数对每个国家/地区组内的“food_id”列进行操作,在识别模式之前按升序对值进行排序。
此查询的结果正如所提供的答案中所演示的,将是一个显示“国家/地区”及其相应的最常见“food_id”值的表格:
country | mode -------------- GB | 3 US | 1
以上是如何在 SQL 中查找每个国家/地区最常见的食品 ID?的详细内容。更多信息请关注PHP中文网其他相关文章!