sql - 带有内部选择子句的按顺序分组的sql查询
问题描述
这是我的表关系。
Users, Roles(Uers 角色), Users_map(用户被分配到一个团队), Team(不同的团队), case_inventory
Users
TIN Name Role_id Member_id
123 ABC 40 1
321 CDE 30 0
678 FGH 40 2
987 XYZ 40 3
087 TYU 40 4
Users_map
tin team
123 1
321 2
678 2
987 2
087 5
Roles:
id role
30 Team President
40 Team Member
Team
id Name
1 Geo
2 Math
3 Science
4 Comp Si
5 Hist
team_inventory(caseId 是团队表中的 id)
teamId TIN Assigned_to PREPARED
1 789 123 N
2 897 678 Y
3 987 123 Y
4 675 123 Y
2 900 321 Y
5 800 678 Y
我期望输出如下:这是基于 UI 的团队。如果选择是数学:
Role Cases Prepped %Completion
Team President 1 1 100% <- 1 inventory is assigned to 321 who is a boardpresident
Team Member 2 2 2 100% <- 2 inventory is assigned to 678 who is a board member whos member id is 2hence team member 2
Team Member 3 0 0 0% <- math team has another team member (team member 3 - id 987 in users table) but no assignment hence 0 case 0 prepped
Summary 3 3 100%
我的查询看起来像这样,
select
COALESCE(role,
'Summary')role,
SUM(CASE
WHEN PREPARED is null THEN 0
ELSE 1
END) as cases ,
SUM(CASE
WHEN PREPARED = 'Y' THEN 1
ELSE 0
END) as prepped,
round(avg(CASE
WHEN PREPARED = 'Y' THEN 100
ELSE 0
END),
2)||'%' as comp
from
( select
CASE
WHEN r.id = 30 THEN r.name
ELSE r.name || ' ' || u.member_id
END AS role,
ti.prepared
from
users u
left outer join
roles r
on u.role_id = r.id
left outer join
team_inventory ti
on u.tin = ti.assigned_to
left outer join
roles r
on u.role_id = r.id
left outer join
user_map um
on um.tin = u.tin
left outer join
team t
on ti.team_id = t.id
where
r.id in(
30,40
)
and ti.team_id =2 )
group by
rollup (role);
此查询工作正常,但 order by 不适用于 group by 。它在内部选择或外部选择中都没有影响。是否有一种有效的方法来编写此查询以获得所需的输出,其中还包括团队主席、团队成员和摘要的顺序?
解决方案
推荐阅读
- python - 有没有办法使用 python 的“匹配”语句来测试 Iterable 是否包含模式?
- c# - 信封 Odata 响应
- java - 生成大型 csv 文件时出现内存不足问题(堆)
- python - 为什么我不能从有标签的地方拖动自定义标题栏?怎么做?
- c# - 使用 C# 在 Artemis 上发送请求响应消息
- f# - `dotnet fsi` 可以在 .NET Framework 模式下运行吗?
- java - 是否有取消 ScheduledExecutorService 中的任务的选项?
- javascript - 如何将javascript中的值绑定到laravel中的视图?
- javascript - Javascript大写功能不起作用
- swift - 实现(通用)协议的弱引用