如何使用select计算倍数列中的重复值

时间:2016-05-25 02:07:01

标签: oracle validation plsql plsqldeveloper

我有 position_table 表:

     CODE_POSITION   NAME      GRADE    VALIDITY    DATE ELIMINATION    LEVEL
1    AAAA01          MANAGER   10       01/03/2016  31/12/2999          HIGH
2    BBBB01          ANALYST   09       01/03/2016  31/12/2999          LOW
3    CCCC01          STAFF     05       01/03/2016  31/12/2999          HIGH
4    BBBB01          ANALYST   09       01/03/2016  31/12/2999          HIGH
5    AAAA01          MANAGER   10       01/03/2016  31/12/2999          LOW
6    DDDD01          INTERN    01       01/03/2016  31/12/2999          HIGH
7    DDDD01          INTERN    01       01/07/2016  31/12/2999          LOW

我使用此查询来查找和计算相同的code_position:

select code_position, count(code_position)
from position_table
group by code_position
having count(code_position) > 1;

这就是结果:

    CODE_POSITION   COUNT(CODE_POSITION)
1   AAAA01          2
2   BBBB01          2
3   DDDD01          2

注意:

  1. AAAA01代码重复两次,并且具有相同的有效日期和等级。
  2. BBBB01代码重复两次,并且具有相同的有效日期和等级。
  3. DDDD01代码重复两次,并且具有不同的有效日期。
  4. 现在我需要检查重复哪个 code_position ,以及它们是否具有相同的有效期日期和等级。喜欢:AAAA01和BBBB01。

1 个答案:

答案 0 :(得分:4)

您可以在GROUP BY中使用多个条件。如果您使用更多条件,则将对所有条件进行比较,并且如果相同则进行分组。

SELECT
    code_position,
    COUNT(code_position),
    validity,
    grade
FROM position_table
GROUP BY
    code_position,
    validity,
    grade
HAVING COUNT(code_position) > 1