這裏的問題是ORDER BY
條款,如果您粘貼完整的錯誤,而不是迫使我們重新從頭開始你的問題,你就知道因爲你沒有提供DDL和數據。
CREATE TABLE "GradesTable" (status text, student_id int, grade int);
INSERT INTO "GradesTable" (status, student_id, grade) VALUES
('success', 1, 80),
('success', 1, 100);
查詢
SELECT sum(grade) FROM "GradesTable"
WHERE status='success' AND student_ID=1
ORDER BY grade DESC
LIMIT 50
;
ERROR: column "GradesTable.grade" must appear in the GROUP BY clause or be used in an aggregate function
LINE 4: ORDER BY grade DESC
但是這個作品,
SELECT sum(grade)
FROM "GradesTable"
WHERE status='success' AND student_ID=1
LIMIT 50
;
sum
-----
180
(1 row)
但你不應該有一個LIMIT
如果你只有那永遠只能返回一行一個AGG。
SELECT sum(grade)
FROM "GradesTable"
WHERE status='success' AND student_ID=1
;
如果你的意思是通過sum(grade)
命令,你可以這樣做,但你不可能grade
訂購您聚合一起第二的能力。然而,在這個例子中,它並不重要,因爲你只返回一行。
作爲一個單獨的說明,你不應該在PostgreSQL中引用標識符。使所有內容小寫,不要引用表名或列名。
的錯誤,我收到來自該查詢:SELECT SUM(級)FROM 「GradesTable」 WHERE狀態= '成功' 和student_id數據= 1 ORDER BY級DESC LIMIT 50 –
你已經顯示的查詢將不會** * *產生該錯誤。請[編輯]你的問題,並添加真正的查詢。請勿在評論中張貼代碼或其他信息 –
@a_horse_with_no_name不正確,請參閱'ORDER BY'。這是我第一次認爲你對與PostgreSQL切線相關的東西是錯誤的。 –