Sql 如何将被划分为其他变量的行作为一个整体进行计数?

Sql 如何将被划分为其他变量的行作为一个整体进行计数?,sql,derby,Sql,Derby,这样,我得到一条河流,它流经的所有省份都被计算在内: SELECT Geo_River.RIVER, COUNT(Geo_River.COUNTRY) FROM Geo_River GROUP BY Geo_River.RIVER 通过这种方式,我多次得到同一条河流,这条河流流经的每个国家和省份都会计算在内: SELECT Geo_River.RIVER, COUNT(Geo_River.COUNTRY) FROM Geo_River GROUP BY Geo_River.RIVER, Geo

这样,我得到一条河流,它流经的所有省份都被计算在内:

SELECT Geo_River.RIVER, COUNT(Geo_River.COUNTRY)
FROM Geo_River
GROUP BY Geo_River.RIVER
通过这种方式,我多次得到同一条河流,这条河流流经的每个国家和省份都会计算在内:

SELECT Geo_River.RIVER, COUNT(Geo_River.COUNTRY)
FROM Geo_River
GROUP BY Geo_River.RIVER, Geo_River.COUNTRY
我想数一数河流流经的国家,但有些国家被划分为不同的省份。 如果是这样的话,这个国家应该算为一个国家,而不是按省份数

CREATE TABLE Country
(Name VARCHAR(40) NOT NULL UNIQUE,
 Code VARCHAR(4) CONSTRAINT CountryKey PRIMARY KEY,
 Capital VARCHAR(40),
 Province VARCHAR(40),
 Area INTEGER CONSTRAINT CountryArea
   CHECK (Area >= 0),
 Population INTEGER CONSTRAINT CountryPop
   CHECK (Population >= 0));
您需要在计数内使用distinct。此外,如果您没有执行联接,则不需要在列之前提供表名

SELECT 
  RIVER, 
  COUNT(distinct COUNTRY)
FROM Geo_River
GROUP BY 
  RIVER

由于问题不太清楚,请提供输入和输出示例

这没有意义:

SELECT Geo_River.RIVER, COUNT(Geo_River.COUNTRY)
FROM Geo_River
GROUP BY Geo_River.RIVER, Geo_River.COUNTRY
你是否需要计算河流流经的不同国家,而你无法直接计算,因为一个国家会有许多省份

像这样的工作

SELECT Geo_River.RIVER, COUNT(distinct Geo_River.COUNTRY) as n_countries
FROM Geo_River
GROUP BY Geo_River.RIVER

假设:SQL=MySQL。

表中有不可变的列只需计算第一次查询中的不同国家:COUNTDISTINCT Geo_River.CountryThank它不知道这是可能的。我使用Apache Netbeans,我认为数据库是作为JAVA-DB创建的,你的意思是吗?我不知道我可以使用distinct in count,所以我想我可能需要连接,这就是我提供表名的原因。@M.Eichhorn如果需要使用连接,请始终使用别名,而不是在列名前面使用完整的表名。这也是解决方案,请点击勾号接受。谢谢。为什么要按国家分组?问题已经解决了。我只是不知道我可以使用distinct进行计数。
SELECT Geo_River.RIVER, COUNT(distinct Geo_River.COUNTRY) as n_countries
FROM Geo_River
GROUP BY Geo_River.RIVER