【问题标题】:Can I add a total to the result without a subquery?我可以在没有子查询的情况下将总计添加到结果中吗?
【发布时间】:2019-02-14 01:10:40
【问题描述】:

我有一个 select 语句,它在表中按时间戳和年份/半年显示一组总计。

但我无法添加一种显示记录总数的方法。我可以在没有子查询的情况下做到这一点吗?或者我是否必须在结果中添加一列并使其成为运行总计?

这是我目前所拥有的:

SELECT
  SUM(x) Total
FROM
(
SELECT YEAR(TimeStamp) Year, 1 + MONTH(TimeStamp) / 7 Half, count(*) ct
FROM Table1
WHERE Row1 = 'Blah'
GROUP BY YEAR(TimeStamp), 1 + MONTH(TimeStamp) / 7
ORDER BY Year DESC, Half ASC
)
 x

但它不会正确解析。我确定我的语法有问题,但我不确定如何让它在底部或任何地方显示总计,即使在结果中也是如此。

我看到了Percent to total in PostgreSQL without subquery 的问题,但我不想扫描表格两次,而且我还不了解窗口函数,但我尝试过,但无法让它在这里工作。

【问题讨论】:

  • 你不能对整个子查询求和。但我不清楚你想在这里做什么。
  • 您能在结果中显示您想要的内容吗?只有总和,总和的新行还是总和的列?

标签: sql sql-server select


【解决方案1】:

使用分组集:

SELECT YEAR(TimeStamp) Year, 1 + MONTH(TimeStamp) / 7 Half, count(*) ct
FROM Table1
WHERE Row1 = 'Blah'
GROUP BY GROUPING SETS (YEAR(TimeStamp), 1 + MONTH(TimeStamp) / 7, ())
ORDER BY Year DESC, Half ASC;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多