【问题标题】:How to select all users who made more than 10 submissions如何选择提交超过 10 次的所有用户
【发布时间】:2008-09-30 07:01:27
【问题描述】:

我有一个提交表,很简单:userId,submissionGuid

我想选择表中提交超过 10 个的所有用户的用户名(简单的内连接来获取)。

我会使用嵌入式查询和 group by 来计算提交...但是有没有更好的方法(没有嵌入式查询)?

谢谢!

【问题讨论】:

    标签: sql


    【解决方案1】:

    我相信这是最简单的方法:

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

    【讨论】:

    • 谢谢。这绝对比这样做更干净:select * from (select count(1) as subs, userid from submissions group by userid) where subs > 10(这是我本来想这样做的方式。)
    【解决方案2】:
    select userId, count(*)
    from   submissions
    having count(*) > 10
    group by userId
    

    【讨论】:

      【解决方案3】:
      SELECT 
          username 
      FROM 
          usertable 
          JOIN submissions 
              ON usertable.userid = submissions.userid 
      GROUP BY 
          usertable.username 
      HAVING 
          Count(*) > 1
      

      *假设您的“用户”表是用户表,并且它有一个名为“用户名”的列

      【讨论】:

        【解决方案4】:

        我认为正确的查询是这样的(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
        

        【讨论】:

          【解决方案5】:

          select userid, count(submissionGUID) as submitCount

          来自提交

          按用户 ID 分组,提交计数

          提交次数 > 10

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-03-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多