使用相同的列、不同的条件连接四个MySQL查询

使用相同的列、不同的条件连接四个MySQL查询,mysql,left-join,alias,where-clause,Mysql,Left Join,Alias,Where Clause,我有四个查询,每个查询有6列。除了WHERE子句在每种情况下略有不同外,每个查询都是相同的。我想看到的是,每一列的每个查询结果彼此相邻,以便进行比较 结果表标题示例:时间(仅一个)、调用1、调用2、调用3、调用4、工作1、工作2、工作3、工作4、tele1、tele2、tele3、tele4、comm1、comm2、comm3、comm4、techs1、techs2、techs3、techs4 实际查询如下。请帮我比较一下。T SELECT CONCAT(hour(opened_dt),':',

我有四个查询,每个查询有6列。除了WHERE子句在每种情况下略有不同外,每个查询都是相同的。我想看到的是,每一列的每个查询结果彼此相邻,以便进行比较

结果表标题示例:时间(仅一个)、调用1、调用2、调用3、调用4、工作1、工作2、工作3、工作4、tele1、tele2、tele3、tele4、comm1、comm2、comm3、comm4、techs1、techs2、techs3、techs4

实际查询如下。请帮我比较一下。T

SELECT CONCAT(hour(opened_dt),':',floor(minute(opened_dt)/15)*15) AS time, COUNT(*)/COUNT(DISTINCT DATE(opened_dt)) AS r_calls, ROUND(AVG(work_time),2)/60 AS r_work, ROUND(AVG(tele_time),2)/60 AS r_tele, ROUND(AVG(comm_time),2)/60 AS r_comm, IFNULL(COUNT(*)/COUNT(DISTINCT DATE(opened_dt)),0)/3 AS r_techs 
FROM detail_head LEFT JOIN detail_detail ON detail_detail.detail_head_uid = detail_head.detail_head_uid 
WHERE call_origins_uid != 5 
AND DATE(opened_dt) >= (CURDATE() - INTERVAL 42 DAY) 
AND dayname(opened_dt) = 'SUNDAY' 
GROUP BY (hour(opened_dt)*100)+floor(minute(opened_dt)/15) 


SELECT CONCAT(hour(opened_dt),':',floor(minute(opened_dt)/15)*15) AS time, COUNT(*)/COUNT(DISTINCT DATE(opened_dt)) AS calls, ROUND(AVG(work_time),2)/60 AS work, ROUND(AVG(tele_time),2)/60 AS tele, ROUND(AVG(comm_time),2)/60 AS comm, IFNULL(COUNT(*)/COUNT(DISTINCT DATE(opened_dt)),0)/3 AS techs 
FROM detail_head LEFT JOIN detail_detail ON detail_detail.detail_head_uid = detail_head.detail_head_uid 
WHERE call_origins_uid != 5 
AND DATE(opened_dt) >= (CURDATE() - INTERVAL 42 DAY) 
AND dayname(opened_dt) = 'SUNDAY' 
AND call_origins_uid = 1 
GROUP BY (hour(opened_dt)*100)+floor(minute(opened_dt)/15)


SELECT CONCAT(hour(opened_dt),':',floor(minute(opened_dt)/15)*15) AS time, COUNT(*)/COUNT(DISTINCT DATE(opened_dt)) AS calls, ROUND(AVG(work_time),2)/60 AS work, ROUND(AVG(tele_time),2)/60 AS tele, ROUND(AVG(comm_time),2)/60 AS comm, IFNULL(COUNT(*)/COUNT(DISTINCT DATE(opened_dt)),0)/3 AS techs 
FROM detail_head LEFT JOIN detail_detail ON detail_detail.detail_head_uid = detail_head.detail_head_uid 
WHERE call_origins_uid != 5 
AND DATE(opened_dt) >= (CURDATE() - INTERVAL 42 DAY) 
AND dayname(opened_dt) = 'SUNDAY' 
AND call_origins_uid = 4 
GROUP BY (hour(opened_dt)*100)+floor(minute(opened_dt)/15)


SELECT CONCAT(hour(opened_dt),':',floor(minute(opened_dt)/15)*15) AS time, COUNT(*)/COUNT(DISTINCT DATE(opened_dt)) AS calls, ROUND(AVG(work_time),2)/60 AS work, ROUND(AVG(tele_time),2)/60 AS tele, ROUND(AVG(comm_time),2)/60 AS comm, IFNULL(COUNT(*)/COUNT(DISTINCT DATE(opened_dt)),0)/3 AS techs 
FROM detail_head LEFT JOIN detail_detail ON detail_detail.detail_head_uid = detail_head.detail_head_uid 
WHERE DATE(opened_dt) >= (CURDATE() - INTERVAL 42 DAY) 
AND dayname(opened_dt) = 'SUNDAY' 
GROUP BY (hour(opened_dt)*100)+floor(minute(opened_dt)/15)

您可以为每个表使用“创建临时表TableName1”,然后编写一个查询以将列按顺序排列,然后在完成后删除表。

您需要格式化查询,以便有人帮助您。这对眼睛来说是非常累人的:更新查询以使它们更容易阅读。对不起!你能解释一下吗?我以前没有使用过临时表。当然,除了关键字“temporary”之外,创建表的语法与普通表相同。不同之处在于该表仅适用于当前连接。另一个选择是使用您的查询创建视图,然后查询视图。您能给我举个例子吗?视图?对于每个查询,请执行以下操作之一。将临时表table1创建为(“此处的查询”);或者创建视图视图名为“此处的查询”;你可以通过查询来获得你想要的格式。或者给我一个临时表的例子-我在谷歌上搜索了一下-但是没有找到一种方法来让这个工作适合我。。。