如何使用 select 计算多个列中的重复值

How to count repeat values in multiples columns with a select

我有 position_table 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 代码重复两次且有效期不同。

现在我需要检查重复了哪些 code_position 以及它们是否具有相同的 validity 日期和 等级到。喜欢:AAAA01 和 BBBB01。

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

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