2016-05-25 2 views
0

я имею 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 повторяется дважды и имеет разную дату действия.

Теперь мне нужно проверить, какие code_position повторяется, и если они имеют ту же дату действительности и класса к. Например: AAAA01 и BBBB01.

+0

Является ли это mysql or oracle? Пожалуйста, отметьте его соответствующим образом! –

+1

Просто добавьте эти столбцы в группу выбора и в группу. –

+0

Хорошо, но теперь мне нужно включить в состояние максимальную оценку и максимальную ценность, как я могу это сделать? @ jorge-campos – spikeTJ

ответ

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 
+0

Как я могу сделать, если я хочу проверить максимальную степень и максимальную дату в том же запросе? @dcieslak – spikeTJ

+0

@spikeTJ В какой колонке находится степень? И на какую дату вы ссылаетесь? На столе есть двое. Если вы знаете столбцы, просто добавьте max (grade), max (date) в список выбора. –

Смежные вопросы