2016-04-19 2 views
1

Скажем, у меня есть таблица вроде этого:Выберите значение, которое имеет большее количество значений

 Table T: 
     A B 
    ------- 
    1 x | O 
    2 x | O 
    3 x | P 
    4 y | O 
    5 y | P 
    6 y | P 
    7 z | O 
    8 z | O 
    9 z | P 

Я хочу, чтобы выбрать значения в столбце A, которые имеют большее количество значений в столбце В

Например, я хочу выбрать x, y или z, если у них больше O, а затем P.

Я сделал несколько попыток, но я честно не могу понять, как это сделать.

Итак, как я могу написать запрос, который будет получать то, что я хочу?

EDIT: Ожидаемый результат будет:

A 
    - 
1 x 
2 z 
+1

добавьте ожидаемый результат. –

+1

Для данных конкретных образцов, каков будет ожидаемый результат? –

ответ

2

Это звучит как агрегация. Что-то вроде этого:

select a 
from t 
group by a 
having sum(B = 'O') > sum(b = 'P'); 
+1

58 секунд. Это было быстро! –

+0

Большое вам спасибо. Я не могу поверить, что это было так просто. – dogwin

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