我被这个问题困住了,我找不到解决办法。
我有一张表,我想计算每个站的零件数量和错误类型,但是如果一个零件在同一个站有多个错误,只需计算字典顺序最高的错误。
数据是这样的:
| station | error | uniquepart_id |
| ----------- | --------- | ----------------- |
| A | ERR_01 | 0001 |
| A | ERR_01 | 0001 |
| A | ERR_02 | 0002 |
| A | ERR_02 | 0002 |
| A | ERR_03 | 0001 |
| A | ERR_03 | 0002 |
| A | ERR_03 | 0003 |
| A | ERR_03 | 0004 |
| B | ERR_01 | 0005 |
| B | ERR_01 | 0006 |
| B | ERR_02 | 0007 |
| B | ERR_02 | 0008 |
| B | ERR_03 | 0009 |
| B | ERR_03 | 0010 |
| B | ERR_03 | 0011 |
| B | ERR_03 | 0012 |
我写了以下查询:
SELECT station, error, COUNT(DISTINCT uniquepart_id) AS num_parts
FROM Tablename
WHERE (process_date= 'xx-xx-xxxx')
GROUP BY station, error
我得到这个结果:
车站 | 错误 | uniquepart_id |
---|---|---|
A | ERR_01 | 1 |
A | ERR_02 | 1 |
A | ERR_03 | 4 |
乙 | ERR_01 | 2 |
乙 | ERR_02 | 2 |
乙 | ERR_03 | 4 |
我正在寻找这个:
车站 | 错误 | uniquepart_id |
---|---|---|
A | ERR_03 | 4 |
乙 | ERR_01 | 2 |
乙 | ERR_02 | 2 |
乙 | ERR_03 | 4 |
我尝试使用 MAX 和 HAVING 来过滤每个组中的行,但出现语法错误。我认为可以通过内部查询来解决。