如何计算SQL查询中已使用count、groupby和have的行数?

如何计算SQL查询中已使用count、groupby和have的行数?,sql,count,Sql,Count,例如,使用此问题的答案: “如何选择提交超过10次的所有用户。” 假设现在我想知道这个sql语句输出了多少行。计算行数的解决方案的可伸缩性如何?在SQL Server中,您可以这样做 select @@ROWCOUNT 紧接着您发布的查询。嵌套查询: select count(*) from (select userId from submission group by userId having count(submissionGuid) > 10) n

例如,使用此问题的答案:

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


假设现在我想知道这个sql语句输出了多少行。计算行数的解决方案的可伸缩性如何?在SQL Server中,您可以这样做

select @@ROWCOUNT 
紧接着您发布的查询。

嵌套查询:

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

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

在前面发布的示例中出现轻微错误,需要为子查询的表名添加别名:


select count(*) from
  (select userId
   from submission 
   group by userId
   having count(submissionGuid) > 10) t
我不确定可伸缩性,但这就是解决方案。如果这对你来说不够好,你需要考虑主要的设计更改,比如跟踪那些提交超过10个提交的人,这些表格是通过提交提交的应用程序更新的。或许多其他可能的解决方案。

您可以尝试以下方法: 我希望能帮助你。
选择(按计数划分(userId)按计数排序(userId))上方的前(1)行作为行数
从提交
按用户ID分组
计数(submissionGuid)>10

order by userId desc

在Oracle中不需要别名。在SQL Server中确实需要它。很好。对不起,我几乎只知道SQL Server。尽管这是一个听起来不错的Oracle功能,但SQL Server别名要求总是让我很恼火。

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