使用左联接进行一对多计数会在源表上计数错误

一口

我有两个桌子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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

GORM为什么要使用一对多的联接表?

来自分类Dev

值计数错误

来自分类Dev

SQL在联接表上计数唯一的真实值

来自分类Dev

Verilog计数器计数错误

来自分类Dev

在具有一对多关系的表上进行一对一左联接的最快方法(MySQL)

来自分类Dev

通过左联接进行合并时出现错误“ msg 8156”

来自分类Dev

MySQL的左联接不正确计数

来自分类Dev

选择同一表上的左联接具有多个计数

来自分类Dev

在netezza中使用左联接进行更新

来自分类Dev

当我从另一个表中选择计数时,左联接不起作用

来自分类Dev

SQL 2左联接一个计数的查询

来自分类Dev

SQLAlchemy联接“一对多表”,然后使用一组值对联接的表进行过滤

来自分类Dev

对联接表进行分组和计数

来自分类Dev

使用左联接进行一对多计数会在源表上计数错误

来自分类Dev

左联接不同的表和计数

来自分类Dev

谷歌表查询左联接一对多

来自分类Dev

在实体框架中使用左联接进行过滤

来自分类Dev

数组计数错误

来自分类Dev

计数错误

来自分类Dev

数组计数错误

来自分类Dev

左联接计数返回一个结果

来自分类Dev

价值计数错误

来自分类Dev

无法使用JDBC连接进行计数

来自分类Dev

使用`LIKE`进行查询的操作数计数错误

来自分类Dev

左联接和表计数

来自分类Dev

从两个表中选择带有左联接计数的计数

来自分类Dev

使用联接列进行单向一对多

来自分类Dev

使用内部联接在同一列上计数

来自分类Dev

使用多个连接进行计数