如何包含包含 GROUP BY 的查询遗漏的缺失值?

Posted

技术标签:

【中文标题】如何包含包含 GROUP BY 的查询遗漏的缺失值?【英文标题】:How to include a missing value left out by a query containing GROUP BY? 【发布时间】:2019-12-21 01:14:21 【问题描述】:

我正在尝试从一个表中检索下面查询中显示的列,该表包含表中所有房屋的信息

select id, address, rooms,
  area, count ( id ), avg( area )
from house
group by rooms
order by rooms asc, area asc
;

查询应显示包含相同房间数的房屋数量以及表中每所房屋的平均面积。

但是,目前有 2 所房子的房间数相同,这导致此查询将另一所房子排除在结果之外。我该如何解决这个重复的问题,例如如何根据房间数显示表格中所有房屋的信息,即使之前已经找到了具有相同房间数的房屋?

这两行是否具有相同的count ( id )avg ( area ) 并不重要。事实上,这将是我们想要的结果。

【问题讨论】:

【参考方案1】:

您可以使用CTE获取房屋数量和平均面积并加入表格:

with cte as (
  select rooms, count(id) counter, avg(area) averagearea
  from house
  group by rooms
)
select 
  h.id, h.address, h.rooms, h.area,
  c.counter, c.averagearea
from house h inner join cte c
on c.rooms = h.rooms
order by h.rooms asc, h.area asc

【讨论】:

以上是关于如何包含包含 GROUP BY 的查询遗漏的缺失值?的主要内容,如果未能解决你的问题,请参考以下文章

选择的字段不包含在 GROUP BY 子句中,那么这个 Access 查询如何成功运行?

BigQuery GROUP BY/GROUP EACH BY 资源超出错误,但查询不包含 GROUP BY 运算符

如何调试“每个 GROUP BY 表达式必须包含至少一列不是外部引用错误”

使用 GROUP BY 时如何将列数据值相加

SQL Server报错:选择列表中的列无效,因为该列没有包含在聚合函数或 GROUP BY 子句中

如何用group by提取包含数据