sql - SQL 中没有总计的 ORDER BY
问题描述
我有这个 SQL 查询,它用于ROLLUP
获取总数,但还需要按数量对每隔一行进行排序:
SELECT
ISNULL([SharepointId], 'Total') as 'Sharepoint',
Count([Id]) as 'Nombre de tickets'
FROM [dbo].[Tickets]
GROUP BY ROLLUP([SharepointId])
ORDER BY 2 DESC, 1
有没有办法确保总数保持在结果的末尾,同时保持其他行的降序?
现在,这就是我得到的:
Sharepoint Nombre de tickets
------------------ -----------------
Total 20326
INTERNE 9396
MAIN 1503
...
解决方案
其他答案错误地代表了您想要的内容。
- 你不希望最后一行因为它是 NULL
- 您希望一行位于最后,因为它已被分组
SQL Server 正好有一个功能,文档页面几乎完全有你的例子......
SELECT
ISNULL([SharepointId], 'Total') as 'Sharepoint',
Count([Id]) as 'Nombre de tickets'
FROM [dbo].[Tickets]
GROUP BY ROLLUP([SharepointId])
ORDER BY GROUPING([SharepointId]), 2 DESC
GROUPING([SharepointId])
是0
当列未分组时(因此这些行首先排序),然后是当1
列分组时(因此该行排在最后)。这在汇总多列时特别有用。
推荐阅读
- xamarin.forms - 使用绝对布局的定点按钮不响应事件
- c# - C# Web Scraping:通过 Web 浏览器控件读取动态加载 ajax 内容
- google-app-engine - [GCP][App Engine] Streamlit Web 应用部署 - 容器崩溃
- arm - ARM 中暂存寄存器的用例是什么?
- karate - 空手道断言响应匹配断言失败
- yaml - curl 命令导致 bitbucket CI/CD 管道 YAML 中的缩进错误
- python - 如何从 Python 正确访问 JSON 中的属性?
- r - 创建一个 for 循环以使用一系列变量实现 ggplot2。将所有内容视为缺失值
- c# - 浮点戏剧性错误(小数部分完全丢失)
- c# - 找不到元数据文件 .dll 且值不能为空(参数名称:键)在 Xamarin 跨平台应用程序上工作时弹出错误