group by speed,ram
создает следующие группы
speed ram
------------
500 64
500 32
900 128
600 128
700 32
700 64
count
Функция условия having
применяется ко всей группе .Таким образом, не имеет значения, пишете ли вы count(speed)
, count(*)
или count(ram)
.Все они возвращают одно и то же значение.
См. Это демо
Единственная группа с населением больше 1 - 500, 64
, следовательно,полученный результат.
Вы можете достичь ожидаемого результата, используя оконную функцию:
SELECT DISTINCT speed, ram
FROM (
SELECT speed, ram, COUNT(*) OVER (PARTITION BY speed) AS cnt
FROM mytable) t
WHERE t.cnt > 1
Обратите внимание на предложение PARTITION BY
оконной функции: она группируется по speed
.
Демо здесь