【发布时间】:2012-01-16 10:06:35
【问题描述】:
我需要编写一个从表中返回聚合和非聚合数据的查询。
下面的示例应该有助于阐明我想要做什么。我在下面有以下(简化的)表格:
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 函数吗?理想情况下,这应该与 db 无关。但是,我使用的是 PostgreSQL 8.4,所以如果我必须在 SQL 风格之间进行选择,则优先。
【问题讨论】:
-
weight_apgh - 个人体重表示为平均身高的百分比?
标签: sql postgresql stored-procedures