【问题标题】:SQL - Get average for multiple, but not all, rows of joined tableSQL - 获取连接表的多行但不是全部行的平均值
【发布时间】:2018-06-19 15:55:32
【问题描述】:

我正在尝试使用 ROUND(AVG(travisor_review.rating)) 获得每个交易人员的四舍五入平均评分。然而,这将返回所有评论的平均值,并且只返回一行,此时每个交易人员应该有一行,并且只返回该交易人员的平均值。我的查询如下(希望您能从中推断出表结构)。

SELECT travisor_tradesperson.name, travisor_catagory.catname, 
  travisor_city.cityname, travisor_company.cname, 
  travisor_company.description, ROUND(AVG(travisor_review.rating))
FROM `travisor_tradesperson`
INNER JOIN travisor_company 
ON travisor_tradesperson.company = travisor_company.id
INNER JOIN travisor_catagory 
ON travisor_tradesperson.catagory = travisor_catagory.id    
INNER JOIN travisor_city 
ON travisor_tradesperson.city = travisor_city.id    
INNER JOIN travisor_review 
ON travisor_review.tradesperson = travisor_tradesperson.id 
WHERE travisor_catagory.catname = '$catagory'
AND travisor_city.cityname = '$city'

【问题讨论】:

标签: mysql sql


【解决方案1】:

你需要一个聚合

SELECT travisor_tradesperson.name, travisor_catagory.catname, 
travisor_city.cityname, travisor_company.cname, 
travisor_company.description, ROUND(AVG(travisor_review.rating))
FROM `travisor_tradesperson`
INNER JOIN travisor_company 
ON travisor_tradesperson.company = travisor_company.id
INNER JOIN travisor_catagory 
ON travisor_tradesperson.catagory = travisor_catagory.id    
INNER JOIN travisor_city 
ON travisor_tradesperson.city = travisor_city.id    
INNER JOIN travisor_review 
ON travisor_review.tradesperson = travisor_tradesperson.id 
WHERE travisor_catagory.catname = '$catagory'
AND travisor_city.cityname = '$city'
group by travisor_tradesperson.name, travisor_catagory.catname, 
travisor_city.cityname, travisor_company.cname, 
travisor_company.description

【讨论】:

    猜你喜欢
    • 2015-10-23
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 2015-06-21
    • 2023-01-31
    • 2021-10-25
    相关资源
    最近更新 更多