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

How to count rows which are divided into other variables as a whole?

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

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));
CREATE TABLE geo_River
(River VARCHAR(40) , 
 Country VARCHAR(4) ,
 Province VARCHAR(40) ,
 CONSTRAINT GRiverKey PRIMARY KEY (Province ,Country, River) );

您需要在 count 内使用 distinct。此外,如果您不进行连接,则无需在列前提供 table 名称。

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.