当前位置: 首页 > 面试题库 >

SQL查询返回汇总和非汇总结果

闻鹤龄
2023-03-14
问题内容

我需要编写一个查询,该查询从表中返回汇总和非汇总数据。

下面的示例应有助于阐明我要执行的操作。我有以下(简化)表:

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风格之间进行选择,则应优先考虑。


问题答案:

遵循以下几行的查询应该可以帮助您入门:

select s.name
     , s.weight
     , ((s.weight/st.avgweight) * 100) as weight_apgaw
     , ((s.height/st.avgheight) * 100) as weight_aphei
from student s 
join (
   select grp_id
        , avg(weight) as avgweight
        , avg(height) as avgheight
   from student
   group by grp_id
   ) st on s.grp_id = st.grp_id


 类似资料:
  • 问题内容: 我正在使用northwind数据库通过创建一些或多或少复杂的查询来刷新我的SQL技能。不幸的是,我找不到最后一个用例的解决方案:“获得1997年每个类别的五个最大订单的总和。” 涉及的表是: 我尝试了以下查询 好吧……原来,子查询在聚合函数中是不允许的。我已经阅读了有关此问题的其他文章,但是找不到针对我的特定用例的解决方案。希望你能帮我… 问题答案: 聚合函数中通常不允许使用子查询。相

  • 我试图按年度汇总我的结果,但我不明白为什么它不起作用。 数据看起来像... 和我的查询代码: 和结果: 如何按年度或月度汇总结果?

  • 问题内容: 我想从数字列表中获得一个总计。 出于演示目的,我先使用 产量 如您所见,我初始化一个空列表,然后在每个循环迭代中。有没有更优雅的方法,例如列表理解? 问题答案: 列表推导没有很好的方法(干净,可移植)来引用其正在构建的列表。一种好的,优雅的方法可能是在生成器中完成该工作: 要获得此列表,当然可以使用。

  • 关于如何利用函数汇总表的数据。 聚集函数 确定表中的行数 获得表中行组的和 找出表列(所有行,特定行)的最大,最小,平均值。 上面的例子需要对表中的数据汇总,而不是实际数据本身,所以可以不需要返回时间数据,浪费资源 聚集函数(aggregate function) 运行在行组上,计算和返回单个值的函数。 AVG(): 返回所有列或者某个列平均值。 计算表中的行数并计算特定列值之和,求得改列的平均值

  • 账单汇总用于查看在云联壹云平台上管理的所有平台的账单汇总。 账单汇总用于查看指定时间范围在 云联壹云 平台上管理的所有平台的账单信息,支持查看本月、上月、本季度、上季度、本年或自定义时间范围的账单汇总信息。 说明 公有云出账时间一般会延迟3-5天;即次月3~5号可以看到完整的上月的账单汇总。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “费用/账单/账单汇总” 菜单项,进入账单汇

  • 简介 前端发展迅速,开发者富有的创造力不断的给前端生态注入新生命,各种库/框架/工程化构建工具层出不穷,眼花缭乱,不盲目追求前沿技术,学习框架和库在满足自己开发需求的基础上,然后最好可以对源码进行调研,了解和深入实现原理,从中可以获得更多的收获 随着前端发展,前端的职责也跟着变化,不再仅仅是设计稿切图+JS实现交互,已经可以涉猎到后端,微信小程序,原生APP等领域,大前端,全栈开发,小程序开发,前