繁体   English   中英

如何离开聚合功能的联接?

[英]How can I left join with aggregate function?

我有两个表, ratingbusiness

rating表:

bussId    userId     rating
----------------------------
  5          454       3
  8          684       5
  8          102       2

business表:

bussId     businessName
-----------------------
   5           name1
   8           name2

我想获得这个查询的bussName及其等级:

SELECT business.businessName,
 COUNT(rating.rating) as ratingCount,
 SUM(rating.rating)as ratingSum
FROM business 
LEFT JOIN (business.bussId = rating.bussId) 
WHERE 1

不幸的是,当我使用聚合函数时,我只有一行? 为什么会这样?

好吧,您有一些语法问题。 您的带有LEFT JOIN FROM子句缺少对rating表的LEFT JOIN 您缺少JOIN的ON子句。 而且由于要汇总数据,因此您缺少GROUP BY 查询应为:

SELECT 
  business.businessName,
 COUNT(rating.rating) as ratingCount,
 SUM(rating.rating) as ratingSum
FROM business 
LEFT JOIN rating
  ON business.bussId = rating.bussId
GROUP BY business.businessName;

请参阅带有演示的SQL Fiddle 如果您不将GROUP BY与聚合函数一起使用,则不会为每个businessName返回数据,而MySQL将选择一个值进行返回。

注意 :我删除了WHERE 1子句,因为它不是必需的。 您没有过滤任何内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM