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

多连接与分组汇总统计:人行道检查系统单查询实现

人行道检查系统的SQL查询实现

首先我得先假设你的数据表结构(毕竟没给具体表结构,我先按常见的场景来),假设你的表名叫sidewalk_inspections,包含以下核心字段:

  • inspection_id:唯一标识每次检查的ID(用来分组“每次检查”)
  • defect_length:单条缺陷的长度(如果每次检查可能有多个缺陷记录,就需要求和;如果每条检查只有一条缺陷记录,直接取字段值即可)
  • observation_type:观测类型(比如你提到的'a')
  • observation_length:单条观测的长度

基于这个结构,我们可以用条件聚合来一次性完成三个计算需求,SQL语句如下:

SELECT
    inspection_id,
    -- 1. 每次检查的缺陷总长度:如果单条检查对应多条缺陷,用SUM求和;如果单条检查只有一条缺陷,直接写defect_length即可
    SUM(defect_length) AS total_defect_length,
    -- 2. 观测类型为'a'的每次检查观测总长度:用CASE筛选类型后求和
    SUM(CASE WHEN observation_type = 'a' THEN observation_length ELSE 0 END) AS type_a_observation_length,
    -- 3. 不区分类型的每次检查观测总长度:直接求和所有观测长度
    SUM(observation_length) AS total_observation_length
FROM
    sidewalk_inspections
GROUP BY
    inspection_id;

关键部分解释:

  • GROUP BY inspection_id:这是核心,确保我们的计算都是基于“每次检查”来聚合的
  • 条件聚合(CASE + SUM):用来精准筛选出类型为'a'的观测记录,只对这类记录的长度求和,其他类型的贡献记为0,这样就得到了特定类型的总长度
  • SUM(defect_length):如果你的表中每次检查只有一条缺陷记录,把SUM去掉直接写defect_length AS total_defect_length就行

如果你的表结构和我假设的不一样(比如缺陷和观测存在不同表),可以根据实际情况调整关联逻辑,但核心思路还是用分组+条件聚合来实现多维度的统计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:22:16