gpt4 book ai didi

MySql 搜索排名标准

转载 作者:可可西里 更新时间:2023-11-01 06:50:49 28 4
gpt4 key购买 nike

我有一个名为 customers 的表,用于保存客户的数据

id  | fname  | lname  
--- | ------ | ------
1 | John | Smith
2 | Mike | Bolton
3 | Liz | John
4 | Mark | Jobs

我还有另一个名为 calls 的表,用于保存对每位客户的每次通话。

id |     timestamp     | customer_id | campaign | answered |
1 |2016-09-05 15:24:08| 1 | 2016-09 | 1 |
2 |2016-09-05 15:20:08| 2 | 2016-09 | 1 |
3 |2016-08-05 15:20:08| 2 | 2016-08 | 1 |
4 |2016-08-05 13:20:08| 3 | 2016-08 | 1 |
5 |2016-08-01 15:20:08| 3 | 2016-08 | 0 |
5 |2016-08-01 12:20:08| 4 | General | 1 |

事件常规不计入计算。

我需要根据每个客户的通话记录获取按通话质量排名排序的客户列表。

此列表用于调用客户以便:

  • 没有在实际的通话事件中被调用(例如。2016-09)
  • 来电较少
  • 最佳接听百分比(接听电话总数/调用电话总数)

它应该看起来像这样:

| id | fname  | lname | %ans | called actual campaign | total calls | rank |
|----|--------|-------|------|------------------------|-------------|------|
| 4 | Mark | Jobs | N/A | no | 0 | 1 |
| 3 | Liz | John | 50 | no | 2 | 2 |
| 1 | John | Smith | 100 | yes | 1 | 3 | No Show
| 2 | Mike | Bolton| 100 | yes | 2 | 4 | No Show

请帮帮我!

最佳答案

查询为每个客户计算指定事件的总调用数和已应答调用数

select 
c.id,
count(*) as total_calls,
sum(case when answered=1 then 1 else 0 end) as answered_calls
from customer c
join calls cs on c.id=cs.customer_id
where cs.campaign='2016-09'
group by c.id

然后就可以将上面的查询作为子查询来下单了

select sub.id, (@rank:=@rank+1) as rank
from (the subquery above) sub, (select @rank:=1)
order by
case when sub.total_calls=0 then 0 else 1,
sub.total_calls,
sub.answered_calls*100/sub.total_calls

您可以在结果查询中包含任何需要的列

关于MySql 搜索排名标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39341197/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com