【问题标题】:SQL - Conditional average [closed]SQL - 条件平均 [关闭]
【发布时间】:2020-11-15 14:38:51
【问题描述】:

所以我在 MySQL 中有这样的查询;

  select Schedule.trackName, Ratings.rating, count(trackName)
from Ratings 
inner Join Schedule on Ratings.trackNo = Schedule.trackNo 
Where rating > 2
group by 1
having count(trackName) > 1;

如果我想取这个查询输出的评分平均值,我将如何实现

【问题讨论】:

  • SELECT AVG(rating) FROM ...... ?

标签: mysql sql average aggregate-functions


【解决方案1】:

您可以使用聚合 AVG 函数来实现:

返回 expr 的平均值

这是您的代码,其中包含 AVG 以返回平均值和计数,按 trackName 列分组:

SELECT  Schedule.trackName,
        AVG(Ratings.rating),
        COUNT(trackName)
  FROM  Ratings 
    INNER JOIN Schedule ON Ratings.trackNo = Schedule.trackNo 
  WHERE rating > 2
  GROUP BY Schedule.trackName
  HAVING COUNT(trackName) > 1;

顺便说一句,最好在GROUP BY 子句中使用列名而不是数字。这个小技巧不适用于其他 RDBMS。

更多关于AVG的信息可以看官方docs

【讨论】:

  • @SOMESOME 不客气。请记得在可以的时候标记答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-09
  • 1970-01-01
相关资源
最近更新 更多