You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL按族群分组查询表列最高频值的SQL实现方法

你当前的写法存在两个核心问题:

  • GROUP BY子句中包含了主键字段sas_id,这会导致每个分组只有单条记录,mode()聚合函数无法按照officer_defined_ethnicity维度统计整个族群的object_of_search高频值
  • 统计族群总搜查数、逮捕率的逻辑不需要用窗口函数,直接使用普通聚合函数配合按officer_defined_ethnicity分组即可

修正后的查询语句如下,完全符合不使用SELECT子句中子查询、关联子查询的要求:

SELECT
    officer_defined_ethnicity,
    count(sas_id) AS "Sas for ethnicity",
    sum(case when outcome = 'Arrest' then 1 else 0 end)::float / count(sas_id)::float * 100 AS "Arrest rate",
    mode() WITHIN GROUP (ORDER BY object_of_search) AS "Most frequent object of search"
FROM stopAndSearches
GROUP BY officer_defined_ethnicity;

该语句仅按officer_defined_ethnicity做唯一分组,所有聚合逻辑都在同一分组维度下执行,每个族群只会返回一行结果,和你期望的输出格式完全匹配。

内容的提问来源于stack exchange,提问作者Aliaksei A. Shysh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:15:01