sql - 有没有一种方法可以从 SQL 查询中获取总数?

标签 sql sql-server

这是我的查询:

SELECT CG.Id, CG.Name, CG.IsToggled, COUNT(*) AS TotalWordCount
FROM CategoryGroup AS CG
JOIN Category AS C ON CG.Id = C.GroupId
JOIN Phrase AS P ON C.Id = P.CategoryId
GROUP BY CG.Id
ORDER BY CG.Name

我需要做的是获取 TotalWordCount 列的总数,其中 CG.IsToggled = 1

这是否可以在同一个查询中实现,或者我可以通过两个查询实现这一点。如果两个 SQL 语句确实得出与所有 TotalWordCount 加在一起的值相同的值,那就没问题了。

最佳答案

你可以用 window function 来解决这个问题

SELECT CG.Id, CG.Name, CG.IsToggled, COUNT(*) AS TotalWordCount,
    COUNT(*) OVER (PARTITION BY CG.id) as TotalTotalWordCount
FROM CategoryGroup AS CG
JOIN Category AS C ON CG.Id = C.GroupId
JOIN Phrase AS P ON C.Id = P.CategoryId
GROUP BY CG.Id
ORDER BY CG.Name

假设这实际上是 Microsoft SQL Server(这意味着发布的原始查询会出错,因为它没有 CG.Name 在您的 GROUP BY 中)。

关于sql - 有没有一种方法可以从 SQL 查询中获取总数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46346490/

相关文章:

sql - SQL Server 2005 中的复杂串联

sql-server - 当我有 "IsDeleted"列类型的日期时间列时,是否需要 bool 列?

sql - 更新 SQL 模式 ONLY_FULL_GROUP_BY 的 GROUP BY 查询

java - 将参数传递给 java 准备语句

sql - 如何在 Microsoft Visual FoxPro 9 中执行自定义函数?

sql-server - 请确认: SYSDATETIME() is slower than GETDATE() in WHERE clause

sql - 选择某年/月内记录存在的天数

sql-server - 全局连接已存在。首先调用 sql.close()

php - 内连接 MYSQL 查询不起作用

sql - 如何在同一个 SQLPLUS INSERT INTO 语句中同时使用 SELECT 查询和 RETURNING