MySQL如何找到具有不同创建日期的不同客户端的平均/天
我尝试了以下查询,但不幸的是它们不起作用:(。 值得一提的是,每个客户都有多个CustomerUsersMySQL如何找到具有不同创建日期的不同客户端的平均/天,mysql,Mysql,我尝试了以下查询,但不幸的是它们不起作用:(。 值得一提的是,每个客户都有多个CustomerUsers select (a.TotalJobs / b.DaysActive) from (select count(jr.id) as TotalJobs from jobrequests jr, customers c, customerusers cu where jr.customeruserid=cu.id and cu.customerid=c.id group by c.name) a
select (a.TotalJobs / b.DaysActive) from
(select count(jr.id) as TotalJobs
from jobrequests jr, customers c, customerusers cu
where jr.customeruserid=cu.id
and cu.customerid=c.id
group by c.name) as a,
(select datediff(curdate(), from_unixtime(c.CreationTime)) as DaysActive
from customers c
group by c.name) as b
请看下面的表格
Jobs:
+----+--------------+
| ID | JobRequestID |
+----+--------------+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 1 |
| 5 | 1 |
| 6 | 2 |
| 7 | 2 |
| 8 | 3 |
| 9 | 3 |
| 10 | 3 |
| 11 | 4 |
| 12 | 4 |
| 13 | 5 |
| 14 | 5 |
| 15 | 6 |
| 16 | 7 |
| 17 | 8 |
| 18 | 8 |
| 19 | 9 |
| 20 | 10 |
+----+--------------+
JobRequests:
+----+---------------+
| ID | CustomeUserID |
+----+---------------+
| 1 | 1 |
| 2 | 1 |
| 3 | 2 |
| 4 | 2 |
| 5 | 2 |
| 6 | 3 |
| 7 | 4 |
| 8 | 4 |
| 9 | 4 |
| 10 | 5 |
| 11 | 5 |
| 12 | 5 |
| 13 | 6 |
| 14 | 6 |
| 15 | 7 |
+----+---------------+
CustomerUsers:
+----+------------+
| ID | CustomerID |
+----+------------+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 2 |
| 6 | 2 |
| 7 | 2 |
| 8 | 3 |
| 9 | 3 |
| 10 | 4 |
+----+------------+
Customers:
+----+------+--------------+
| ID | Name | CreationTime |
+----+------+--------------+
| 1 | a | 1415814194 |
| 2 | b | 1415814194 |
| 3 | c | 1415986994 |
| 4 | d | 1415986994 |
+----+------+--------------+
工作:
+----+--------------+
|ID |作业请求ID|
+----+--------------+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 1 |
| 5 | 1 |
| 6 | 2 |
| 7 | 2 |
| 8 | 3 |
| 9 | 3 |
| 10 | 3 |
| 11 | 4 |
| 12 | 4 |
| 13 | 5 |
| 14 | 5 |
| 15 | 6 |
| 16 | 7 |
| 17 | 8 |
| 18 | 8 |
| 19 | 9 |
| 20 | 10 |
+----+--------------+
职位申请:
+----+---------------+
|ID |客户服务ID|
+----+---------------+
| 1 | 1 |
| 2 | 1 |
| 3 | 2 |
| 4 | 2 |
| 5 | 2 |
| 6 | 3 |
| 7 | 4 |
| 8 | 4 |
| 9 | 4 |
| 10 | 5 |
| 11 | 5 |
| 12 | 5 |
| 13 | 6 |
| 14 | 6 |
| 15 | 7 |
+----+---------------+
客户:
+----+------------+
|ID |客户ID|
+----+------------+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 2 |
| 6 | 2 |
| 7 | 2 |
| 8 | 3 |
| 9 | 3 |
| 10 | 4 |
+----+------------+
客户:
+----+------+--------------+
|ID |名称|创建时间|
+----+------+--------------+
|1 | a | 1415814194|
|2 | b | 1415814194|
|3 | c | 1415986994|
|4 | d | 1415986994|
+----+------+--------------+
目前,它返回16个结果(4X4),将第一个子查询中的每个结果除以第二个子查询中的每个结果(每个子查询返回4个结果)。是否有人能帮助我将此结果从子查询1中仅除以一个结果,再除以子查询2的共同响应
提前谢谢。我猜您需要将您的结果结合在一起-- 尝试这样的操作,将
c.id
添加到每个子查询中(最好按它分组,而不是按名称分组):
请注意,我已更新了您的语法,以使用更标准的
join
语法。我怀疑您可以按照您的要求执行以下查询:
select c.name, count(*) / (datediff(curdate(), from_unixtime(c.CreationTime))
from customerusers cu join
jobrequests jr
on jr.customeruserid = cu.id join
customers c
on cu.customerid = c.id
group by c.name;
我不明白你为什么需要两个子查询来完成这个任务。你能描述一下你想要完成什么吗?+1,我不想花那么多脑力,但我完全同意,这是一个更好的解决方案。。。
select c.name, count(*) / (datediff(curdate(), from_unixtime(c.CreationTime))
from customerusers cu join
jobrequests jr
on jr.customeruserid = cu.id join
customers c
on cu.customerid = c.id
group by c.name;