我需要编写一个查询,从表中返回聚合和非聚合数据。
下面的示例应该有助于澄清我的意图。我有以下(简化)表格:
CREATE TABLE course_group_def (
id PRIMARY SERIAL KEY,
name TEXT NOT NULL
);
CREATE TABLE student (
id PRIMARY SERIAL KEY,
grp_id INTEGER REFERENCES course_group_def(id) ON UPDATE CASCADE,
name TEXT NOT NULL,
weight float NOT NULL,
height float NOT NULL
);
假设每个学生只属于一个课程组,请按以下格式返回结果集的查询:
"student.name, student.weight, weight_apgaw, weight_apgh"
其中:
"weight_apgaw":是单个学生的体重,以他/她所属课程组的平均体重的百分比表示。
"weight_apgh":是单个学生的体重,以他/她所属课程组的平均身高的百分比表示。
我不知道如何编写这样的查询,我的想法是编写两个查询,并在两个表之间进行查找,但这种方法似乎毫无意义且效率低下。请建议正确编写此类SQL函数的方法。最好该方法应该与数据库无关,但我正在使用PostgreSQL 8.4,因此如果必须选择SQL语言,则以该语言为准。