Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编写1个SQL查询,将3个独立的表与函数组合在一起:GROUPBY和case when_Sql - Fatal编程技术网

编写1个SQL查询,将3个独立的表与函数组合在一起:GROUPBY和case when

编写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

我有以下三个表格:

表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', '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,如其他注释所述。只需从联合输出中选择,并在联合之外执行分组方式<代码>按输出选择*从(此处为联合)作为输出组。角色