我有一条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,但是我不想两次扫描表格,而且我还不了解窗口功能,但是我尝试并且无法使其在这里工作。
答案 0 :(得分:2)
使用分组集:
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;