MySQL查询:按suburb统计挂牌house与unit的占比
可行MySQL查询方案
前提假设
默认你的properties表包含以下核心字段:
suburb:存储区域名称property_type:存储物业类型,合法取值包含house和unit
如果存在专门标识挂牌状态的字段(比如is_listed),可自行在WHERE条件中补充过滤规则。
查询语句
SELECT suburb, ROUND(SUM(CASE WHEN property_type = 'house' THEN 1 ELSE 0 END) / COUNT(*) * 100, 2) AS houses_percent, ROUND(SUM(CASE WHEN property_type = 'unit' THEN 1 ELSE 0 END) / COUNT(*) * 100, 2) AS units_percent FROM properties -- 需筛选挂牌状态时取消注释下方行,替换为实际业务规则 -- WHERE is_listed = 1 GROUP BY suburb;
逻辑说明
- 用CASE语句逐行判断物业类型,累加对应类型的总记录数
- 类型总数除以该suburb下总挂牌数乘以100得到百分比数值
ROUND(参数, 2)实现四舍五入保留2位小数,需输出整数时将2改为0即可,完全匹配你给出的示例输出规则- 按
suburb分组实现区域维度的聚合统计 - 若某区域下无对应类型的物业,占比会自动返回0,无需额外处理边界情况
兼容调整
如果物业类型字段存在大小写不一致的情况(如House/HOUSE),可将判断条件调整为LOWER(property_type) = 'house'兼容不同写法。
内容的提问来源于stack exchange,提问作者zu_james
相关产品推荐
相关产品推荐

