【问题标题】:Why I got Not a single-group group function为什么我得到了 Not a single-group group 功能
【发布时间】:2015-04-20 21:22:21
【问题描述】:

如果该国家/地区有超过 3 种语言,我想获取名称和语言编号。但我不知道为什么会出现“不是单组群功能”错误。

SELECT C.NAME,COUNT(L.LANGUAGE)
FROM WORLD.CITY C
INNER JOIN WORLD.COUNTRYLANGUAGE L ON C.COUNTRYCODE = L.COUNTRYCODE
WHERE C.COUNTRYCODE = (
    SELECT COUNTRYCODE
    FROM WORLD.COUNTRYLANGUAGE
    GROUP BY COUNTRYCODE HAVING COUNT(LANGUAGE) >3)
GROUP BY NAME;
DESC WORLD.CITY;

 Name                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                    NOT NULL NUMBER(10)
 NAME                      NOT NULL CHAR(35 CHAR)
 COUNTRYCODE                   NOT NULL CHAR(3 CHAR)
 DISTRICT                  NOT NULL CHAR(20 CHAR)
 POPULATION                NOT NULL NUMBER(10)
DESC WORLD.COUNTRYLANGUAGE;

 Name                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 COUNTRYCODE                   NOT NULL CHAR(3 CHAR)
 LANGUAGE                  NOT NULL CHAR(30 CHAR)
 ISOFFICIAL                NOT NULL VARCHAR2(4000 CHAR)
 PERCENTAGE                NOT NULL FLOAT(126)

【问题讨论】:

  • ifofficial 作为 varchar2(4000)?说“是”或“否”需要 4000 个字符?
  • 我看不到该查询将如何生成该特定错误。你确定这是你正在运行的吗?查询还有其他问题,但我认为聚合没有问题。
  • 我确定这是我遇到的错误。有人可以帮忙吗?我需要使用子查询来做到这一点。谢谢。

标签: sql subquery


【解决方案1】:

你可以改写为:

SELECT C.NAME,COUNT(L.LANGUAGE)
FROM WORLD.CITY C
INNER JOIN WORLD.COUNTRYLANGUAGE L ON C.COUNTRYCODE = L.COUNTRYCODE
GROUP BY C.NAME
HAVING COUNT(L.LANGUAGE) > 3

【讨论】:

    【解决方案2】:

    我认为你需要IN,当你按所有选择元素进行分组时,必须是分组子句的一部分

    SELECT C.NAME,COUNT(L.LANGUAGE)
    FROM WORLD.CITY C
    INNER JOIN WORLD.COUNTRYLANGUAGE L ON C.COUNTRYCODE = L.COUNTRYCODE
    WHERE C.COUNTRYCODE IN (
        SELECT COUNTRYCODE
        FROM WORLD.COUNTRYLANGUAGE
        GROUP BY COUNTRYCODE HAVING COUNT(LANGUAGE) >3)
    GROUP BY NAME,COUNT(L.LANGUAGE);
    

    【讨论】:

    • 不。您需要使用HAVING 而不是WHERE
    猜你喜欢
    • 2022-09-23
    • 2015-08-18
    • 2021-09-08
    • 1970-01-01
    • 2021-09-12
    • 2022-01-22
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    相关资源
    最近更新 更多