У меня есть очень простая таблица отправки: userId, submissionGuid
Я хочу выбрать имя пользователя (простое внутреннее соединение, чтобы получить его) всех пользователей, у которых в таблице более 10 представлений.
Я бы сделал это со встроенными запросами и группой для подсчета представлений ... но есть ли лучший способ сделать это (без встроенных запросов)?
Спасибо!


select userId, count(*)
from submissions
having count(*) > 10
group by userId
Я считаю, что это самый простой способ:
select userId
from submission
group by userId
having count(submissionGuid) > 10
SELECT
username
FROM
usertable
JOIN submissions
ON usertable.userid = submissions.userid
GROUP BY
usertable.username
HAVING
Count(*) > 1
* Предполагается, что ваша таблица «Пользователи» является таблицей для вызовов и имеет столбец с именем «Имя пользователя».
Я думаю, что правильный запрос (SQL Server):
SELECT s.userId, u.userName
FROM submission s INNER JOIN users u on u.userId = s.userId
GROUP BY s.userId, u.username
HAVING COUNT(submissionGuid) > 10
Если у вас нет предложения HAVING:
SELECT u.userId, u.userName
FROM users u INNER JOIN (
SELECT userId, COUNT(submissionGuid) AS cnt
FROM submission
GROUP BY userId ) sc ON sc.userId = u.userId
WHERE sc.cnt > 10
выберите идентификатор пользователя, подсчитайте (submissionGUID) как submitCount
из представленных материалов
группа по идентификатору пользователя, submitCount
имея submitCount> 10
Спасибо. Это определенно чище, чем делать: select * from (select count (1) as subs, userid from submissions group by userid), где subs> 10 (как я и думал, это сделать).