我有这个查询,它根据引导类型检索所有潜在客户的聚合,然后将它们分组到城市。
SELECT city, assign_count,
SUM(leadtype = 'paper' AND status='NEW' ) paper,
SUM(leadtype = 'door' AND status='NEW' ) door
FROM leads GROUP BY city
这一切都很好,我可以按如下方式显示结果
City 1 : Door | 12 Paper | 23
City 2 : Door | 33 Paper | 44
City 3 : Door | 44 Paper | 12
Etc etc etc....
但是,我现在想要突出显示assign_count值最低的那些。
如何获得每张纸和门的最低assign_count。 我正在检索它,但它显然只是最后一个选定线索的assign_count,并且仅作为整个城市。不适用于按聚合分组的单独分配。
我想这样显示。
City 1 : Door |Cnt: 1| 12 Paper |Cnt: 2| 23 // Door would be highlighted green in this case
City 2 : Door |Cnt: 6| 12 Paper |Cnt: 4| 23 // Paper would be highlighted green in this case
etc etc
但是,通过上述查询,我只能这样显示,
City 1 : Cnt : 0 Door |12 Paper | 23
City 2 : Cnt : 7 Door |12 Paper | 55
甚至计数都是错误的,因为它显然只是选择查询中最后一个引导的assign_count值,不一定是最低的assign_count,并且绝对不是每个门和纸的最低值
希望我在这里做得很清楚。
答案 0 :(得分:1)
这是你想要的吗?
SELECT city, assign_count,
SUM(leadtype = 'paper' AND status = 'NEW' ) as paper,
MIN(case when eadtype = 'paper' AND status = 'NEW' then assign_count end) as ac_paper,
SUM(leadtype = 'door' AND status = 'NEW' ) as door,
MIN(case when eadtype = 'door' AND status = 'NEW' then assign_count end) as ac_door
FROM leads
GROUP BY city;
注意:您不应在assign_count
列表中添加SELECT
。它应该在聚合函数'MIN()'
或GROUP BY
子句中。您获得的值是不确定的(根据MySQL文档)。