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

SQL统计需求:按工位和错误类型统计零件,保留字典序最高错误

解决SQL统计难题:按工位+错误类型统计零件,同一零件仅算字典序最高错误

现有一张包含station(工位)、error(错误类型)、uniquepart_id(唯一零件ID)的表,需求是按工位和错误类型统计零件数量,但同一工位下的同一零件若存在多个错误,仅统计字典序最高的错误。

数据示例

stationerroruniquepart_id
AERR_010001
AERR_010001
AERR_020002
AERR_020002
AERR_030001
AERR_030002
AERR_030003
AERR_030004
BERR_010005
BERR_010006
BERR_020007
BERR_020008
BERR_030009
BERR_030010
BERR_030011
BERR_030012

原查询语句

SELECT station, error, COUNT(DISTINCT uniquepart_id) AS num_parts
FROM Tablename
WHERE (process_date= 'xx-xx-xxxx')
GROUP BY station, error

原查询结果

stationerrornum_parts
AERR_011
AERR_021
AERR_034
BERR_012
BERR_022
BERR_034

期望结果

stationerrornum_parts
AERR_034
BERR_012
BERR_022
BERR_034

正确SQL实现方案

核心思路是先为每个工位下的每个零件确定其字典序最高的错误类型,再基于这个结果统计数量:

完整查询语句

SELECT station, max_error AS error, COUNT(uniquepart_id) AS num_parts
FROM (
    -- 子查询:获取每个工位下每个零件的最高错误类型
    SELECT station, uniquepart_id, MAX(error) AS max_error
    FROM Tablename
    WHERE process_date = 'xx-xx-xxxx'
    GROUP BY station, uniquepart_id
) AS part_max_errors
GROUP BY station, max_error
ORDER BY station, error;

逻辑说明

  1. 子查询阶段:按station和uniquepart_id分组,用MAX(error)获取每个零件在对应工位下字典序最高的错误类型,确保每个零件只关联一个最高优先级错误。
  2. 外层统计阶段:基于子查询结果,按station和max_error分组统计零件数量,最终得到符合需求的统计结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 00:47:45