2016-05-14 3 views
0
select distinct hash, title, count(*) as c 
from pastes 
where hash is not null 
group by hash, title 
order by c desc; 

Я могу сортировать результаты этого запроса на основе столбца 'c', который я определил «на лету» в запросе.Как использовать суммарную меру в моем предложении WHERE

Но я хотел бы также добавить C в предложении WHERE:

select distinct hash, title, count(*) as c 
from pastes 
where c > 10 and hash is not null 
group by hash, title 
order by c desc; 

ERROR: column "c" does not exist 
LINE 1: ...inct hash, title, count(*) as c from pastes where c > 10 and... 
                  ^

Что такое правильный способ указать запрос, как это?

ответ

2

Условия на агрегатах выполнены с использованием having

select hash, title, count(*) as c 
from pastes 
where hash is not null 
group by hash, title 
having count(*) > 10 
order by c desc; 
0

Вы можете просто обернуть его в качестве подзапроса:

select q.* from (
select hash, title, count(*) as c 
from pastes where hash is not null 
group by hash, title 
) q 
where q.c > 10 
order by q.c desc; 

Вы можете пропустить подзапрос и использовать HAVING в отличие от WHERE, но я вижу, что вы также должны ORDER BY с, следовательно, вложенный запрос.

+0

HAVING подпункт, похоже на работу с заказом на с. – user3556757

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