你好..我有一个 table 与 family_id 和城市。我需要一个城市为每个 family id 大多数人居住的城市

Hello..i have a table with family_id and city .I need one city for each family id where majority of the people live in

enter image description here

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

error:ORA-00979: not a GROUP BY expression 00979. 00000 - "not a GROUP BY expression" *Cause:
*Action: Error at Line: 116 Column: 24

Family_members

您不能将 window-function (dense_rank()) 与 GROUP BY 一起使用。如果您需要同时执行这两项操作,则必须创建 sub-select.

编辑: 这是我的建议:

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;