sql - 我有多个查询,但我希望只有 1 个查询可以运行所有查询
问题描述
所以我有一个数据库,我想选择权重,问题是我有不同的权重,我想知道我是否可以把它变成 1 个查询。这是我拥有的两种不同的重量类型以及我所做的。
SELECT TOP (13) height, Sum(total weight) as 'total weight'
FROM dbo.combine
WHERE
FacilityType = 'male'
GROUP BY height
ORDER BY Sum(totalweight) DESC
SELECT TOP (13) height, Sum(total weight) as 'total weight'
FROM dbo.combine
WHERE
FacilityType = 'female'
GROUP BY height
ORDER BY Sum(totalweight) DESC
解决方案
您可以使用GROUP BY
和窗口函数:
SELECT FacilityType, WasteStreamType, tonnes_hh
FROM (SELECT FacilityType, WasteStreamType, Sum(TonnesFromHHSources) as tonnes_hh,
ROW_NUMBER() OVER (PARTITION BY FacilityType ORDER BY Sum(TonnesFromHHSources) DESC) as seqnum
FROM dbo.combine c
GROUP BY FacilityType, WasteStreamType
) fw
WHERE seqnum <= 13
推荐阅读
- python - 在没有 GIL 的情况下在 Cython 中并行化
- ruby-on-rails - Table_for 中关联资源的 ActiveAdmin 默认操作
- reactjs - 在 .map 循环中反应不必要的重新渲染
- javascript - 在使用 iframe 时键入安全的方法来检查 instanceof?
- c# - 用户 'root'@'localhost' 的 ASP.NET MVC MySQL 访问被拒绝(使用密码:否)
- excel - 将一张工作表复制到另一张工作表时,我的 VBA 代码会跳转到用户窗体中间宏,即使代码没有规定这一点
- java - Springboot 基本服务抛出 404(但它出现在 Swagger-ui 中)[已解决]
- python - 如何使用 glob.glob("") 按名称排除某些文件?
- mongoose - 在 Model.findOneAndUpdate 中使用事务
- excel - 如何在 VBA 宏中处理和获取来自 XML 文件的动态标签的值