【问题标题】:Finding an average SQL查找平均 SQL
【发布时间】:2013-07-28 16:25:30
【问题描述】:

我正在尝试创建评分的平均值。

我已经尝试过 AVG(column_name)。然而,问题在于它对所有评级进行了总计并给出了平均值。

Select Company.company_id, company.Company_Name, avg(UserJobRating.Total_Rating)
from company
inner join UserJobRating on Job_id = UserJobRating.Job_ID
inner join jobs on jobs.Company_id = company.company_id
group by company.company_id

我想说的是,例如,一家特定的公司有 10/15 个工作,每个工作都有一个工作评级。我希望它将特定于该公司的工作组合在一起,并对该公司的所有工作进行平均评分。

我需要做什么类型的选择才能做到这一点?

【问题讨论】:

  • 你需要一个 group by 子句。

标签: mysql sql average


【解决方案1】:

您的问题是join 条件:

Select Company.company_id, company.Company_Name, avg(UserJobRating.Total_Rating)
from company
inner join UserJobRating on Job_id = UserJobRating.Job_ID
----------------------------^
inner join jobs on jobs.Company_id = company.company_id
group by company.company_id

发生的情况是company 没有名为Job_id 的字段。所以,这个条件真的是:

inner join UserJobRating on UserJobRating.Job_id = UserJobRating.Job_ID

本质上是cross join 而不是inner join(唯一的区别是这会过滤掉job_idNULL 值)。

大概,正确的字段在下一个表中,所以你需要重新排列连接中的表:

Select Company.company_id, company.Company_Name, avg(UserJobRating.Total_Rating)
from company
inner join jobs on jobs.Company_id = company.company_id
inner join UserJobRating on jobs.Job_id = UserJobRating.Job_ID
group by company.company_id;

这应该可以解决您的问题。

【讨论】:

    【解决方案2】:

    我会从你的评论中猜测一下发生了什么,所以我认为你的 JOIN 有点不对劲。试试这个:

    Select Company.company_id, company.Company_Name, avg(UserJobRating.Total_Rating)
    from company
      inner join jobs on jobs.Company_id = company.company_id
      inner join UserJobRating on jobs.Job_id = UserJobRating.Job_ID
    group by company.company_id
    

    在没有看到您的表定义的情况下,这有点猜测,但我敢打赌,您正在生成带有 UserJobRating 表的 Cartesian Product 和以下语句:

    on Job_id = UserJobRating.Job_ID

    【讨论】:

    • 是的,就是这样……你做了什么来改变它?我所能看到的不同之处在于内部连接中的顺序
    • @AndrewGlass -- 在加入userjobrating 表时,您需要引用jobs.job_id 字段。很高兴我能帮上忙!
    猜你喜欢
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 1970-01-01
    相关资源
    最近更新 更多