mysql - 必需的 SQL 查询
问题描述
我已经坚持了一段时间了。
我有以下 SQL 表:
department
桌子
Id Name
1 DeptA
2 DeptB
3 DeptC
users
桌子
Id Name Dept
101 Alice 2
102 Bob 3
alpha
桌子
Id Uid Title
501 101 HELLO
502 102 HEY
503 101 SQL
beta
桌子
Id Uid Title
601 101 HELLO1
602 101 HEY1
603 102 SQL1
解释:
- 基本上有一个
users
包含所有用户的表。 - 每个用户都有一个部门(
Dept
字段) - 每个用户都有一些记录,通过
Uid
、 inalpha
和beta
表链接到它。
我想要的结果:
DeptA DeptB DeptC
0 4 2
我想要记录的计数alpha
和beta
组合,按Dept
这些表中记录的用户分组。
有人可以帮我处理 SQL 查询吗?
解决方案
根据您的表结构,我使用部门 ID 来检索结果,否则我使用部门名称。如果你得到 NULL,你也可以使用 COALESCE 函数
-- MySQL
SELECT SUM(CASE WHEN d.id = 1 THEN COALESCE(total, 0) END) dept_A
, SUM(CASE WHEN d.id = 2 THEN COALESCE(total, 0) END) dept_B
, SUM(CASE WHEN d.id = 3 THEN COALESCE(total, 0) END) dept_C
FROM department d
LEFT JOIN (SELECT u.dept
, COUNT(1) total
FROM users u
INNER JOIN (SELECT uid
FROM alpha
UNION ALL
SELECT uid
FROM beta) t
ON u.id = t.uid
GROUP BY u.dept ) p
ON d.id = p.dept;
推荐阅读
- css - &.class 与 &.class 的区别
- excel - 如何在文本框中只允许双重数据类型?
- java - 在一台服务器上为多个网站设置 Tomcat (linux)
- amazon-web-services - 用于 kubernetes 仪表板的 aws ubuntu 16.04 中的 UI
- sql - SSRS 报告生成而不选择所有参数
- smarty - foreach 循环中的 Smarty 备用视图元素
- r - 将网格添加到 R 中的图像
- css - 媒体查询未在 Shopify 上正确显示
- c# - 更好的带有类型检查 C# 的 If 语句
- javascript - Javascript点击功能,如何避免其他链接?