You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用GROUP BY子句与SUM聚合函数分组统计州级数据报错求助

按州统计总入住率的SQL错误修复

问题背景

你原本的SQL是查询单条记录的分组房产入住情况,现在需要按州汇总总已占用房产数、总房产数以及州级整体入住率,但执行分组查询时触发了Msg 8120错误,提示totaloccupancy列既不在聚合函数中,也未被包含在GROUP BY子句内,不符合SQL分组查询的语法规则。

错误原因

SQL的GROUP BY语法有明确要求:SELECT子句中的列,要么是GROUP BY指定的分组列,要么必须被聚合函数(如SUM、COUNT、AVG等)包裹。你之前的尝试直接引用了未做聚合处理的totaloccupancy和totalproperty字段,违反了这一规则,因此报错。

解决方案

要实现按州汇总,需用SUM()函数分别计算每个州的总已占用房产数、总房产数,再基于这两个总和计算州级整体入住率,最后按state_name分组。正确SQL如下:

SELECT 
    state_name AS State_Names,
    SUM(totaloccupancy) AS Total_OccupiedProperties,
    SUM(totalproperty) AS Total_Properties, 
    CAST(ROUND(SUM(totaloccupancy) * 100.0 / SUM(totalproperty), 1) AS REAL) AS Occupancy_Percentage 
FROM 
    OCCUPANCYPERCENTAGE
GROUP BY 
    state_name

代码说明

  • SUM(totaloccupancy):累加同一州所有记录的已占用房产数,得到该州总已占用量
  • SUM(totalproperty):累加同一州所有记录的总房产数,得到该州总房产量
  • 入住率计算基于两个总和,确保结果是州级别的整体占比,而非单条记录的占比
  • GROUP BY state_name:指定按州名分组,保证每个州仅返回一条汇总记录

执行后会得到类似如下的结果:

State_Names  Total_OccupiedProperties  Total_Properties  Occupancy_Percentage
Florida      56                         71                78.9
Georgia      638                        723               88.2

内容的提问来源于stack exchange,提问作者ABHISHEK THAKUR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:01:20