你好,我有一张桌子,有family_id和城市.我需要为大多数人居住的每个家庭ID提供一个城市



在此处输入图像描述

SELECT
  family_id,
  MIN((city)) keep (DENSE_RANK FIRST ORDER BY COUNT (city) DESC)
FROM FAMILY_MEMBERS
GROUP BY family_id;

错误:ORA-00979:不是分组依据表达式 00979. 00000 - "不是按表达式分组" *原因:
*行动: 行错误:116 列:24

Family_members

不能将窗口函数 (dense_rank()) 与 GROUP BY 一起使用。如果需要同时执行这两项操作,则必须进行子选择。

编辑:这是我的建议:

SELECT y.family_id, y.City
FROM 
(SELECT x.family_id, x.City, x.Member_count,
row_number() OVER (PARTITION BY x.family_id ORDER BY x.Member_count DESC) rn
FROM
(SELECT family_id, City, COUNT(*) Member_count
FROM FAMILY_MEMBERS
GROUP BY family_id, City) x) y
WHERE y.rn = 1;

相关内容

最新更新