如何将划分为其他变量的行作为一个整体进行统计?
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.
这样我得到一条河流,它流经的所有省份都被计算在内:
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.