【发布时间】:2015-11-20 22:26:19
【问题描述】:
我有以下查询来获取论文成绩列表。
SELECT DISTINCT papers.paper_id, papers.paper_title, AVG(paper_judge_participations.paper_judge_participation_score) AS final_grade,
(SELECT array_agg(paper_author_name) FROM paper_authors as authors WHERE authors.paper_id=papers.paper_id )::varchar as paper_author_name
FROM papers
FULL JOIN paper_categories ON paper_categories.paper_category_id=papers.paper_category_id
LEFT JOIN paper_judge_participations ON papers.paper_id = paper_judge_participations.paper_id
WHERE ((papers.paper_note IS NULL AND final_grade >= 7) OR (papers.paper_note IS NOT NULL AND papers.paper_note >= 7)) AND papers.paper_category_id = 1
GROUP BY papers.paper_id ORDER BY final_grade, papers.paper_note;
我想查看平均结果中的 final_grade 变量是否大于 7,但出现错误:
ERROR: column "final_grade" does not exist
LINE 6: WHERE ((papers.paper_note IS NULL AND final_grade >= 7) OR (...
如何在WHERE 条件下使用平均结果?
【问题讨论】:
-
AVG() 在 where 子句中是不允许的。 ): @vkp
-
您需要将平均条件放在“HAVING”子句中,该子句位于 GROUP BY 之后
-
我是 SQL 新手。你能用脚本回答这个问题吗,@mlinth?
标签: sql postgresql average aggregation