你好..我有一个 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
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
您不能将 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;
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
您不能将 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;