2008-09-30 3 views
3

У меня есть таблица представления, что очень просто: идентификатор пользователя, submissionGuidКак выбрать всех пользователей, которые сделали более 10 представлений

Я хочу, чтобы выбрать имя пользователя (просто внутреннее соединение, чтобы получить его) всех пользователей, имеют более 10 представлений в таблице.

Я бы сделал это со встроенными запросами и группой для подсчета заявок ... но есть ли лучший способ сделать это (без встроенных запросов)?

Спасибо!

ответ

5

Это самый простой способ, я считаю:

select userId 
from submission 
group by userId 
having count(submissionGuid) > 10 
+0

Спасибо. Это определенно более чистое, чем выполнение: выберите * from (выберите count (1) в качестве субтитров, userid из группы заявок по userid), где subs> 10 (именно так я и думал, чтобы это сделать). – rksprst 2008-09-30 07:13:48

1
select userId, count(*) 
from submissions 
having count(*) > 10 
group by userId 
1
SELECT 
    username 
FROM 
    usertable 
    JOIN submissions 
     ON usertable.userid = submissions.userid 
GROUP BY 
    usertable.username 
HAVING 
    Count(*) > 1 

* Если предположить, что ваш "Пользователи" таблица вызова usertable и что она имеет столбец под названием "UserName"

0

Я думаю, что правильный запрос - это (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 
0

выберите идентификатор пользователя, граф (submissionGUID) в submitCount

от Материалы

группа по идентификатору пользователя, submitCount

имеющий submitCount> 10

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