2015-02-24 450 views
-1

表1:書蟲數據庫的模式。主鍵帶下劃線。有一些外鍵引用將表連接在一起;你可以使用這些與自然連接。帶有DISTINCT語句的SQL SUM聚合

Author(aid, alastname, afirstname, acountry, aborn, adied). 
Book(bid, btitle, pid, bdate, bpages, bprice). 
City(cid, cname, cstate, ccountry). 
Publisher(pid, pname). 
Author_Book(aid, bid). 
Publisher_City(pid, cid). 

這個問題讓我有點困惑,任何幫助都非常感謝。

查找每個國家/地區的作者數量。

到目前爲止,我已經嘗試

SELECT 
    SUM(DISTINCT acountry) AS total, 
    COUNT(DISTINCT acountry)AS N 
FROM Author; 

並得到:

ERROR: function sum(character varying) does not exist LINE 1: select sum(distinct acountry) as total, count(distinct acoun...

提示:無功能的指定名稱和參數類型相匹配。您可能需要添加顯式類型轉換。

+0

您不能「求和」字符串。你認爲「Arthur」和「Zaphod」的「總和」是什麼?你想解決什麼問題? – 2015-02-24 07:24:35

+0

好的,現在我明白了,謝謝。如何使用count語句呢? @a_horse_with_no_name。 – 2015-02-24 07:27:10

+0

您需要使用具有集合函數的'group' – 2015-02-24 07:28:44

回答

1

您不能sum字符串。由於acountry包含字符串值(假設國家/地區名稱)。而要獲得the number of authors of each country.得到你需要使用GroupBy國名和計數該組中的行,你可以試試下面這個國家明智的作家計數,

SELECT COUNT(*) AS totalAuthor, 
     acountry AS Country 
FROM Author 
GROUP BY acountry 
+0

謝謝!我知道我將不得不使用count而不是sum我不知道我爲什麼總是想。我明白爲什麼GroupBy被捲入,現在是有道理的。..祝賀 – 2015-02-24 07:38:14

+0

@a_horse_with_no_name沒有那樣的。只需輸入它的匆忙。我會把它改成'*'。 – 2015-02-24 07:55:54

0

您可以通過國家需要組,計每組的記錄數

SELECT acountry, COUNT(1) as NumberOfAuthors FROM Author GROUP BY acountry