我有一個SQL表這樣的領域:SQL AVG()和ORDER BY組合
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";
以上將檢索平均值好吧,但我怎麼能輸出他們以降序?
我有一個SQL表這樣的領域:SQL AVG()和ORDER BY組合
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";
以上將檢索平均值好吧,但我怎麼能輸出他們以降序?
正常的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
(並且未在問題中顯示),則上述內容應該可以正常工作。
我明白...但我正在尋找的是按降序對得到的平均值進行排序。有沒有辦法做到這一點與SQL或我將不得不由我自己/代碼排序結果值? – richey
我不確定你的意思是...你是說你想排序列自己而不是返回的行?換句話說,如果'F2'的平均值高於'F1',它是第一列呢?如果是這樣的話,那是不可能的(除非你建立了一個荒謬可靠的'UNION'聲明) – newfurniturey
你說F1,F2等是行,但它們是查詢中的列?你的桌子有什麼專欄? –
對不起,哈姆扎,這令人困惑, - 這些是字段名稱。我已經相應地糾正了這個問題。 – richey
由於字段(列)的數量有限且數量相對較少,您是否可以將它們全部抓取並在代碼中進行排序? –