[英]How can I left join with aggregate function?
我有两个表, rating
和business
。
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.