选择列的AVG和单个特定行

时间:2016-08-16 16:08:25

标签: mysql

反馈表

-------------------------------
|rating|feedback|feedback_date|
-------------------------------
| 5    | good   | 1452638788  |
| 1    | bad    | 1452638900  |
| 0    | ugly   | 1452750303  |
| 3    | ok     | 1453903030  |
-------------------------------

期望的结果

average_rating | rating | feedback | feedback_date
2.25           |  3     |  ok      | 1453903030

是否可以(在单个查询中)从表中选择一列的平均值以及一个特定的行?

例如,我想检索列rating和最近一行的平均值。

我尝试了以下操作,并将ORDER BY方向设为DSC,但他们都给了我average_rating和表格中的第一行。

SELECT AVG(f.rating) AS average_rating, f.* FROM feedback f ORDER BY feedback_date ASC

3 个答案:

答案 0 :(得分:2)

SELECT * FROM feedback NATURAL JOIN (
  SELECT AVG(rating), MAX(feedback_date) feedback_date FROM feedback
) t

sqlfiddle上查看。

答案 1 :(得分:2)

你可以用这样的子查询来做到这一点 SELECT AVG(f.rating) AS average_rating, t1.* FROM feedback f inner join (select * from feedback order by feedback_date asc limit 1 ) t1 on true

答案 2 :(得分:1)

您可以在SELECT (SELECT AVG(rating) FROM feedback) AS avg_rating, feedback.* FROM feedback ORDER BY feedback_date DESC LIMIT 1 子句中放置子查询,并计算子查询中的平均值。

{{1}}