Sql 为什么我没有一个组函数

Sql 为什么我没有一个组函数,sql,subquery,Sql,Subquery,如果国家有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 GR

如果国家有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;

我认为您需要在中使用,而且在执行group by时,所有select元素都必须是group by子句的一部分

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);
您可以重写为:

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

ifofficial
作为varchar2(4000)?回答“是”或“否”需要4000个字符?我不知道该查询将如何生成该特定错误。你确定这就是你正在运行的吗?查询还有其他问题,但我认为聚合没有问题。我确信这就是我得到的错误。有人能帮忙吗?我需要使用子查询来完成这项工作。谢谢,没有。您需要使用
HAVING
not
WHERE
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);
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