我需要编写一个查询,从表中返回聚合数据和非聚合数据。
下面的例子应该有助于澄清我想要做什么。我有以下(简化的)表格:
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
);
为了便于讨论,我们假设每个学生都属于一个且唯一的课程组。我想编写一个查询,该查询将返回如下结果集:
学生.姓名、学生.体重、weight_apgaw、weight_apgh
Where:
重量_apgaw:是单个学生的体重,以他/她所属课程组的平均体重的百分比表示。
重量_apgh:是单个学生的体重,以他/她所属课程组平均身高的百分比表示
我不知道(好吧,有些想法)如何编写这样的查询。我的方法是编写两个查询,并以某种方式在两个表之间进行查找 - 但这种方法充其量似乎是无意义且低效的。
有人可以建议我如何正确编写这样的 SQL 函数吗?理想情况下,这应该与数据库无关。但是,我使用的是 PostgreSQL 8.4,因此如果我必须在 SQL 风格之间进行选择,则优先选择该版本。