... где count (col)> 1
У меня есть таблица вроде этого:
+-----+-----+-------+
| id | fk | value |
+-----+-----+-------+
| 0 | 1 | peter |
| 1 | 1 | josh |
| 3 | 2 | marc |
| ... | ... | ... |
Теперь я хочу получить все записи, которые имеют более одного значения.
Ожидаемый результат:
+-----+-------+
| fk | count |
+-----+-------+
| 1 | 2 |
| ... | ... |
Я пытался добиться этого следующим образом:
select fk, count(value) from table where count(value) > 1;
Но Oracle это не понравилось.
Итак, я попробовал это...
select * from (
select fk, count(value) as cnt from table
) where cnt > 1;
... без успеха.
Любые идеи?
Ответы
Ответ 1
Используйте предложение having
для сравнения агрегатов.
Кроме того, вам нужно группировать то, что вы агрегируете, чтобы запрос работал правильно. Следующее - это начало, но поскольку вам не хватает позиции group by, все равно это не сработает. Что именно вы пытаетесь подсчитать?
select fk, count(value)
from table
group by fk
having count(value) > 1;