如何计算被划分为其他变量的行作为一个整体?

iezvtpos  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(307)

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

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) );
gkn4icbw

gkn4icbw1#

你需要使用 distinctcount . 另外,如果不执行联接,则不需要在列之前提供表名。

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

u91tlkcl2#

由于问题不太清楚,请提供输入和输出示例。
这毫无意义:

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。

相关问题