Yahoo奇摩知識+ 將於 2021 年 5 月 4 日 (美國東部時間) 終止服務。自 2021 年 4 月 20 日 (美國東部時間) 起,Yahoo奇摩知識+ 網站將會轉為唯讀模式。其他 Yahoo奇摩產品與服務或您的 Yahoo奇摩帳號都不會受影響。如需關於 Yahoo奇摩知識+ 停止服務以及下載您個人資料的資訊,請參閱說明網頁。

?
Lv 7
? 發問時間: 電腦與網際網路程式設計 · 1 0 年前

SQL distinct的錯誤不知道問題在哪

我目前做一個查詢

A資料表有 area 和 name 兩個欄位

我要統計住在台北市.台中市.........有幾個人

但是name那邊有重複的相同名稱,我要去掉

所以我的寫法是

select area,count(distinct name)

from A

group by area

但是他出來的數目字卻是好幾倍耶

這樣查詢結果出來

台北市 318

台中市 200

台南市 651

total 1169

但是我將A資料表只count(distinct name)

不group by了 出現的數字竟然只有292

這是為什麼呢??

然後我原本是area一個資料表 name一個資料表

我是先join了

原本的name資料表 distinct name 一樣是292

然後join到A資料表後 就上述那個語法 一樣是292

但group by後 竟然變1169

已更新項目:

因為我要做百分比 但是這樣總數應該是要用292

可是資料出來光台北市就318 不可能超過100%阿

2 個已更新項目:

另外原先的area是用身分證去分辨

所以說我是用update

update A

set area = '台北市'

where IDnumber = 'A'

(事前已經將ID取出字串第一個 所以只有英文字)

是因為多了這手續 所以出錯嗎

3 個已更新項目:

後來我去查了 直接用count(distinct name)然後group by name 的確發現有重複

後來我又下了

select area,count(name),count(distinct name)

from A

group by area

後來出來的數字

台北市 318 318

台中市 200 200

台南市 651 651

根本就是沒有distinct掉阿= =

1 個解答

評分
  • 1 0 年前
    最佳解答

    這是正確的:

    select area,count(distinct name)

    from A

    group by area

    你用 select count(distinct name) from A

    結果只有 292

    是因為可能你同一個人的名字有多次出現在不同的縣市

    例如:

    台北市 李大砲

    台中市 李大砲

    台南市 李大砲

    select area,count(distinct name)

    from A

    group by area

    會出現:

    台北市 1

    台中市 1

    台南市 1

    但是

    select count(distinct name) from A

    卻只會出現 1

    希望有幫到你...

還有問題?馬上發問,尋求解答。