Можно ли группировать кортежи по идентификатору и получать только кортежи, соответствующие критериям ПОДСЧЕТА?

#sql

Вопрос:

У меня возникла проблема, когда мне нужно получить количество кортежей со значением выше определенного порогового значения.

Мой стол выглядит примерно так

 CREATE TABLE TableName
(
id varchar;
result int;
)
 

Теперь я хочу сгруппировать кортежи по идентификатору и посмотреть количество объектов, результат которых превышает 50, а также количество объектов с любым значением результата. Я знаю, что счетчик существует, но я не могу понять, как его использовать в этом контексте.

Любая помощь будет высоко оценена!

Комментарии:

1. Помогут примеры данных и желаемые результаты.

Ответ №1:

Если я правильно понимаю, вы можете использовать условную агрегацию:

 select id, count(*) as num_rows,
       sum(case when value > 50 then 1 else 0 end) as num_rows_value_50
from t
group by id;
 

Комментарии:

1. Спасибо! Это сделало свое дело 🙂