【问题标题】:Getting a seperate/minimum value of another column, of an aggregate in MYSQL在 MYSQL 中获取聚合的另一列的单独/最小值
【发布时间】:2014-11-06 01:30:08
【问题描述】:

我有这个查询,它根据潜在客户类型检索我所有潜在客户的聚合,然后将它们分组到城市中。

    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,并且仅适用于整个城市。不适用于按聚合分组的单独分组。

我想这样显示。

  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

甚至count也是错误的,因为它显然只是选择了查询中最后一个lead的assign_count值,不一定是最低的assign_count,也绝对不是每扇门和每张纸都最低的

希望我在这里表达得足够清楚。

【问题讨论】:

  • 我不清楚你在问什么。为什么不能在应用程序中执行此操作。如果可以,请解决您的问题,以便将表格结构化为带有列标题的表格。我不知道这条线应该是什么意思(例如):City 1 : Door |Cnt: 1| 12 Paper |Cnt: 2| 23.
  • 我只想要按聚合分组的 assign_count 值,而不是城市。
  • 什么是assign_count?您的查询如何给出City 1 : Door | 12 Paper | 23...的结果集?
  • It SUM 的门和纸。并按城市分组。我不明白为什么这很难理解。查询非常简单。我问的是每扇门和每张纸的assign_count

标签: mysql group-by aggregates


【解决方案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;

请注意:您不应在SELECT 列表中包含assign_count。它应该在聚合函数'MIN()'GROUP BY 子句中。您得到的值是不确定的(根据 MySQL 文档)。

【讨论】:

  • 是的,这正是我想要的。谢谢
猜你喜欢
  • 1970-01-01
  • 2020-05-20
  • 1970-01-01
  • 1970-01-01
  • 2019-08-03
  • 1970-01-01
  • 2018-07-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多