SQL COUNT DISTINCT 条件基于另一列

问题描述 投票:0回答:0

我被这个问题困住了,我找不到解决办法。

我有一张表,我想计算每个站的零件数量和错误类型,但是如果一个零件在同一个站有多个错误,只需计算字典顺序最高的错误。

数据是这样的:

| 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 来过滤每个组中的行,但出现语法错误。我认为可以通过内部查询来解决。

sql hadoop impala
© www.soinside.com 2019 - 2024. All rights reserved.