编写1个SQL查询,将3个独立的表与函数组合在一起:GROUPBY和case when
我有以下三个表格: 表a有4列:编写1个SQL查询,将3个独立的表与函数组合在一起:GROUPBY和case when,sql,Sql,我有以下三个表格: 表a有4列: date: (2020-11-31,...) note: (20, 30, 40,...) home: (23.45, 45.34, 65.67, ...) id: (54326, 87332, ...) time: (2020-11-31,...) grade: (34, 54, 34,...) homework: (12.32, 34.65,...) user: ('student', 'professor', 'stude
date: (2020-11-31,...)
note: (20, 30, 40,...)
home: (23.45, 45.34, 65.67, ...)
id: (54326, 87332, ...)
time: (2020-11-31,...)
grade: (34, 54, 34,...)
homework: (12.32, 34.65,...)
user: ('student', 'professor', 'student',...)
day: (2020-11-31,...)
number: (34, 54, 34,...)
amount: (10.24 AGE, 11.25 AGE, 12.63 AGE, ...)
title: ('54934-ST-string-student-str.st', '54934-ST-string-teacher-str.st',....)
表b有4列:
date: (2020-11-31,...)
note: (20, 30, 40,...)
home: (23.45, 45.34, 65.67, ...)
id: (54326, 87332, ...)
time: (2020-11-31,...)
grade: (34, 54, 34,...)
homework: (12.32, 34.65,...)
user: ('student', 'professor', 'student',...)
day: (2020-11-31,...)
number: (34, 54, 34,...)
amount: (10.24 AGE, 11.25 AGE, 12.63 AGE, ...)
title: ('54934-ST-string-student-str.st', '54934-ST-string-teacher-str.st',....)
表c有4列:
date: (2020-11-31,...)
note: (20, 30, 40,...)
home: (23.45, 45.34, 65.67, ...)
id: (54326, 87332, ...)
time: (2020-11-31,...)
grade: (34, 54, 34,...)
homework: (12.32, 34.65,...)
user: ('student', 'professor', 'student',...)
day: (2020-11-31,...)
number: (34, 54, 34,...)
amount: (10.24 AGE, 11.25 AGE, 12.63 AGE, ...)
title: ('54934-ST-string-student-str.st', '54934-ST-string-teacher-str.st',....)
很抱歉,表格演示文稿,但以表格格式放置并不容易
我创建了一个SQL查询来计算每个表所需的内容,但我没有成功地将这3个查询合并到一个表中。我想不出我需要用什么逻辑来组合它
以下是每个表的SQL代码:
SELECT
SUM(home/note) AS kpi,
CASE
WHEN id IN (34564, 87423, 89076, 32145, 87653) THEN 'Student'
WHEN id IN (67543, 87413, 78996, 34215 ) THEN 'Teacher'
ELSE 'Other'
END AS role
FROM school_a
WHERE date >= '2020-08-01' AND date <= '2020-08-31'
GROUP BY role
SELECT
SUM(grade)/COUNT(user) AS kpi,
CASE
WHEN user = 'Student' THEN 'Student'
WHEN user = 'Professor' THEN 'Teacher'
ELSE 'Other'
END AS role
FROM school_b
WHERE time >= '2020-08-01' AND time <= '2020-08-31'
GROUP BY role
SELECT
SUM((REPLACE(amount,' AGE',''))/number) AS kpi,
CASE
WHEN title IN ('41320 - ST-STtr-Student-str.st', '89064 - ST-stRst-str-strr user-strr.str/blablabla/strstr') THEN 'Student'
WHEN title IN ('43789 - ST-STred-Teacher-stee.str', '65283-CH-strstrs-teacher-strr.str--STR') THEN 'Teacher'
ELSE 'Other'
END AS role
FROM school_c
WHERE day >= '2020-08-01' AND day <= '2020-08-31'
GROUP BY role
选择
作为关键绩效指标的金额(主值/注释),
案例
当id为(3456487423890763214587653)时,则为“学生”
当id为(67543、87413、78996、34215)时,则为“教师”
“其他”
以角色结束
来自学校
其中日期>='2020-08-01'和日期='2020-08-01'以及时间='2020-08-01'和日期您是否尝试简单地合并不同的输出
SELECT SUM(home/note) AS kpi,
CASE
WHEN id IN (34564, 87423, 89076, 32145, 87653) THEN 'Student'
WHEN id IN (67543, 87413, 78996, 34215 ) THEN 'Teacher'
ELSE 'Other'
END AS role
FROM school_a
WHERE date >= '2020-08-01' AND date <= '2020-08-31'
GROUP BY role
UNION
SELECT SUM(grade)/COUNT(user) AS kpi,
CASE
WHEN user = 'Student' THEN 'Student'
WHEN user = 'Professor' THEN 'Teacher'
ELSE 'Other'
END AS role
FROM school_b
WHERE time >= '2020-08-01' AND time <= '2020-08-31'
GROUP BY role
UNION
SELECT SUM((REPLACE(amount,' AGE',''))/number) AS kpi,
CASE
WHEN title IN ('41320 - ST-STtr-Student-str.st', '89064 - ST-stRst-str-strr user-strr.str/blablabla/strstr') THEN 'Student'
WHEN title IN ('43789 - ST-STred-Teacher-stee.str', '65283-CH-strstrs-teacher-strr.str--STR') THEN 'Teacher'
ELSE 'Other'
END AS role
FROM school_c
WHERE day >= '2020-08-01' AND day <= '2020-08-31'
GROUP BY role
选择总和(主/备注)作为kpi,
案例
当id为(3456487423890763214587653)时,则为“学生”
当id为(67543、87413、78996、34215)时,则为“教师”
“其他”
以角色结束
来自学校
其中日期>='2020-08-01'和日期='2020-08-01'和时间='2020-08-01'和日期什么是“联合”?请提供样品输出这是我第一次提出这样的问题。感谢各位撰稿人让我的问题更具可读性。您使用的“合并”查询是什么?因为我认为你可以简单地联合所有人
,因为每个表只有[kpi][role]两列。注意总和(等级)/计数(用户)
可以替换为平均(等级)
(假设用户
永远不能为空)我编辑了我的问题@astentx我想在一个sql查询中运行我在问题中编写的3个查询。预期结果是两列,每个角色有3行和相应的kpi。我几乎得到了预期的结果。我有两列角色(学生、教师、其他)和每个角色的kpi。结果是每所学校:a学校/b学校/c学校。如果我想在不考虑学校分组的情况下按角色分组,我该怎么办?你知道我需要在哪里添加更改才能只按角色分组,而不再按学校分组吗@thommy@Isa只需从该联合中选择,并执行分组方式
@Isa,如其他注释所述。只需从联合输出中选择,并在联合之外执行分组方式<代码>按输出选择*从(此处为联合)作为输出组。角色