私はすでにSQLフィドルにスキーマとサンプルデータを提供しています。
http://sqlfiddle.com/#!2/e9d22/7/0
タイの州と都市の数を知りたい場合。
Country Name | No. Provinces | No. Cities
Thailand | 77 | 1234
複数のCOUNT(*)を使用する必要があると思いますが、使用方法がわかりません。
誰かが解決策を提案してくださいを知っていますか?
私はすでにSQLフィドルにスキーマとサンプルデータを提供しています。
http://sqlfiddle.com/#!2/e9d22/7/0
タイの州と都市の数を知りたい場合。
Country Name | No. Provinces | No. Cities
Thailand | 77 | 1234
複数のCOUNT(*)を使用する必要があると思いますが、使用方法がわかりません。
誰かが解決策を提案してくださいを知っていますか?
これを試して:
SELECT
C.Name, COUNT(DISTINCT P.Id) NoProvance, COUNT(CC.Id) NoCities
FROM country C
JOIN province P
ON C.Id = P.COUNTRY_ID
JOIN city CC
ON P.Id = CC.province_id
WHERE C.Name = 'Thailand'
GROUP BY C.Name
とを使用する必要がありGROUP BY
ますCOUNT
:
SELECT c.name, count(distinct p.id) provincecoutn, count(distinct city.id) citycount
FROM country c
LEFT JOIN province p on c.id = p.country_id
LEFT JOIN City on p.id = city.province_id
GROUP BY c.name
幸運を。
プロヴィンスに参加する前に、プロヴィンスごとに都市を数えた方がおそらく速いでしょう:
SELECT c.name AS "Country Name"
,count(p.id) AS "No. Provinces"
,sum(ci.city_ct) AS "No. Cities"
FROM country c
LEFT JOIN province p ON p.country_id = c.id
LEFT JOIN (
SELECT province_id, count(*) AS city_ct FROM city GROUP BY 1
) ci ON ci.province_id = p.id
GROUP BY 1
-> PostgreSQL 用の sqlfiddle(!)