2014-11-06 77 views
0

我有這個查詢,它根據leadtype檢索我所有潛在客戶的聚合,然後將它們分組到城市中。獲取MYSQL中聚合的另一列的單獨/最小值

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。 我正在檢索它,但它顯然只是最後一次選定的lead的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,並且絕對不是每個門和紙的最低價

希望我在這裏讓自己清楚。

+1

我不清楚你在問什麼。爲什麼你不能在應用程序中這樣做。如果可以的話,修復你的問題,以便表格結構爲帶有列標題的表格。我不知道這條線應該是什麼意思(例如):城市1:門| Cnt:1 | 12紙| Cnt:2 | 23'。 – 2014-11-06 01:52:43

+0

我只是想要根據聚集分組的assign_count值,而不是城市。 – KyleK 2014-11-06 01:55:49

+0

什麼是'assign_count'?您的查詢如何使用「城市1:門|」提供結果集12紙| 23' ......? – ForguesR 2014-11-06 01:59:03

回答

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文檔)。

+0

是的,這正是我想要的。謝謝 – KyleK 2014-11-06 02:25:24

相關問題