#sql
#sql
Вопрос:
У меня есть таблица, которая выглядит следующим образом:
| user_id | client_application_id | invalidated_at
| 1 | 55555 | |
| 1 | 123 | |
Я хочу иметь возможность делать одну вещь:
- Уметь подсчитывать, сколько идентификаторов пользователей имеют более 250 идентификаторов client_application_id в своей учетной записи, и упорядочивать их так, чтобы они начинались с 250 и увеличивались.
Мой текущий (неправильный) запрос выглядит следующим образом:
select user_id, count(user_id) as cnt from tokens where invalidated_at is null group by user_id having count(user_id) > 250 order by cnt ;
Результат выглядит следующим образом:
user_id | cnt
------------ -----
1 | 251
5 | 251
Используя этот пример, я хотел бы, чтобы запрос подсчитал двух пользователей, у которых есть 251, чтобы это выглядело следующим образом:
Count_Of_Users | Application_Count
2 | 251
Комментарии:
1. в чем проблема.. у вас есть идентификатор пользователя по первому запросу .. лучше объясните ожидаемый результат для запроса secondo..
2. Отредактируйте свой вопрос и предоставьте желаемый результат.
3. Обновил его сейчас, надеюсь, это более понятно
Ответ №1:
Вы можете использовать что-то похожее на ваш запрос в качестве подзапроса и получить нужный вам результат:
select count(user_id) as count_of_users, cnt as application_count from
(
select user_id, count(client_application_id) as cnt
from tokens
where invalidated_at is null
group by user_id having count(client_application_id) > 250
) t
group by cnt
order by cnt
Ответ №2:
Неясно, какой ваш ожидаемый результат для запроса secondo может быть чем-то вроде этого
select users.*, t.user_id, t.cnt
from users
inner join (
select user_id, count(user_id) as cnt
from tokens
where invalidated_at is null
group by user_id
having count(user_id) > 250
) t on users.id = t.user_id
order by t.user_id