例如,使用这个问题的答案:
如何选择提交超过 10 次 的所有用户 “如何选择提交超过 10 次的所有用户。”
select userId
from submission
group by userId
having count(submissionGuid) > 10
假设现在我想知道这条 sql 语句输出的行数。计算行数的解决方案的可扩展性如何?
例如,使用这个问题的答案:
如何选择提交超过 10 次 的所有用户 “如何选择提交超过 10 次的所有用户。”
select userId
from submission
group by userId
having count(submissionGuid) > 10
假设现在我想知道这条 sql 语句输出的行数。计算行数的解决方案的可扩展性如何?
先前发布的示例中的小错误,需要子查询的表名的别名:
select count(*) from
(select userId
from submission
group by userId
having count(submissionGuid) > 10) t
我不确定可扩展性,但这是解决方案。如果这对您来说扩展性不够好,您需要考虑重大的设计更改,例如可能跟踪那些在一个单独的表中提交超过 10 个提交的人,您通过填充提交的应用程序更新该表格。或许多其他可能的解决方案。
嵌套查询:
select count(*) from
(select userId
from submission
group by userId
having count(submissionGuid) > 10) n
编辑以合并 mbrierst 关于嵌套子查询需要别名(末尾的“n”)的评论。Oracle 不需要,但 SQL Server 需要。随意添加有关其他数据库平台使用情况的评论。
在 SQL Server 中你可以做
select @@ROWCOUNT
紧跟在您发布的查询之后。
你可以试试这个方法:我希望能帮助你。
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