SQL AVG()和ORDER BY组合

时间:2013-10-14 18:47:44

标签: mysql

我有一个SQL表,其中的字段如下:

F1 40
F2 30
F3 120
F4 77
F5 12
F6..
F7..

我想检索任何给定字段的平均值,但是按降序对它们进行排序。

$query = "SELECT AVG(F1) as F1, AVG(F2) as F2, AVG(F3) as F3, (..)
     FROM survey";

上面会检索平均值没问题,但我怎么能按降序输出呢?

1 个答案:

答案 0 :(得分:0)

正常的ORDER BY方法即使使用AVG()SUM()这样的汇总函数也应该有效。您应该能够直接访问字段作为别名(例如F1 DESC),但如果这不起作用,您可能需要使用不同的方法。

尝试使用查询:

SELECT
    AVG(F1) as F1_avg, AVG(F2) as F2_avg, AVG(F3) as F3_avg
FROM
    survey
ORDER BY
    F1_avg DESC;

根据您当前的查询,您只会收到一行会违反ORDER BY的目的。但是,如果您使用GROUP BY(并且只是在问题中没有显示),则上述情况应该会正常运行。