5

例如,使用这个问题的答案:

如何选择提交超过 10 次 的所有用户 “如何选择提交超过 10 次的所有用户。”

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

假设现在我想知道这条 sql 语句输出的行数。计算行数的解决方案的可扩展性如何?

4

4 回答 4

12

先前发布的示例中的小错误,需要子查询的表名的别名:


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

我不确定可扩展性,但这是解决方案。如果这对您来说扩展性不够好,您需要考虑重大的设计更改,例如可能跟踪那些在一个单独的表中提交超过 10 个提交的人,您通过填充提交的应用程序更新该表格。或许多其他可能的解决方案。

于 2008-10-29T04:20:31.373 回答
5

嵌套查询:

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

编辑以合并 mbrierst 关于嵌套子查询需要别名(末尾的“n”)的评论。Oracle 不需要,但 SQL Server 需要。随意添加有关其他数据库平台使用情况的评论。

于 2008-10-29T04:15:19.153 回答
3

在 SQL Server 中你可以做

select @@ROWCOUNT 

紧跟在您发布的查询之后。

于 2008-10-29T04:11:37.633 回答
0

你可以试试这个方法:我希望能帮助你。 select top(1) row_number() over(partition by count(userId) order by count(userId)) as RowNumber from submission group by userId having count(submissionGuid) > 10 order by userId desc

于 2020-05-08T08:09:28.133 回答