簡體   English   中英

使用左聯接進行一對多計數會在源表上計數錯誤

[英]Count one-to-many using left join gives wrong count on source table

我有兩個表user_resultsuser_shares

user_results具有:

id - pk
platform - string
country - string
created_at - timestamp

user_shares具有:

id - pk
user_result_id - integer
created_at - timestamp

這是我的查詢:

select 
    count(user_results.id) as results,
    count(user_shares.id) as shares,
    user_results.platform as platform 
from
    user_results
left join 
    user_shares on user_results.id = user_shares.user_result_id 
group by 
    platform

這是一個帶有模式和有問題的查詢的sql小提琴: http : //sqlfiddle.com/#!9/739a3/2

現在,正如您在小提琴上看到的那樣,每個平台我只有1個結果,但是results計數顯示(我猜)“沒有共享的結果計數+共享計數”

我做錯了什么?

您需要計數不一樣的distinct user_results.id ,因為聯接表重復了其行:

select 
  count(distinct user_results.id) as results,
  count(user_shares.id) as shares,
  user_results.platform as platform 
from
  user_results
left join 
  user_shares on user_results.id = user_shares.user_result_id 
group by 
  platform

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM