2011-08-16 25 views
0

我需要知道如何總結記錄的所有計數。我有表master_tracking(master_vw_tracking_name_grp),其中有像優先級與恆定值,如果5意味着非常高,如果4高和3中等領域。我也有打開日期的open_date字段名稱。現在我可以這樣計算了。Mysql如何在一條select語句中運行每個計數的總和

V-HIGH      
SELECT substr(open_date,1,10) as time, COUNT(*) as rows FROM 
`master_vw_tracking_name_grp` 
where assigned_to in ('name1','name2','name3') and substr(open_date,1,16) 
between '2011-07-25 00:00' and '2011-07-25 23:59' and priority='5' 
group by substr(open_date,1,10) order by 1; 
+------------+------+ 
| time  | rows | 
+------------+------+ 
| 2011-07-25 | 9 | 
+------------+------+ 
1 row in set (0.00 sec) 

HIGH 
SELECT substr(open_date,1,10) as time, COUNT(*) as rows 
FROM `master_vw_tracking_name_grp` 
where assigned_to in ('name1','name2','name3') and substr(open_date,1,16) 
between '2011-07-25 00:00' and '2011-07-25 23:59' and priority='4' 
group by substr(open_date,1,10) order by 1; 
+------------+------+ 
| time  | rows | 
+------------+------+ 
| 2011-07-25 | 20 | 
+------------+------+ 
1 row in set (0.10 sec) 

MEDIUM 
SELECT substr(open_date,1,10) as time, COUNT(*) as rows 
FROM `master_vw_tracking_name_grp` 
where assigned_to in ('name1','name2','name3') and substr(open_date,1,16) 
between '2011-07-25 00:00' and '2011-07-25 23:59' and priority='3' 
group by substr(open_date,1,10) order by 1; 
+------------+------+ 
| time  | rows | 
+------------+------+ 
| 2011-07-25 | 20 | 
+------------+------+ 
1 row in set (0.09 sec)  

我需要把它放在Pentaho的儀表盤這樣的。

Agent:     No. Of Open Tickets    Total 
ServiceDeskGroup Very High 5| High 4 | Medium 3 

         9   18   19    97 

         9   20  20    49 

我該如何處理一個查詢中打開票據的總和。

+0

這是我見過的最錯位的問題,你可以請嘗試清除它一點。請閱讀此處的格式幫助 - http://stackoverflow.com/editing-help – Ben

+0

請更正您的格式以方便閱讀。我做了一些,但請完成它。 – Ariel

+0

不知道你在問什麼。每個代理商針對每個優先級的門票數量? '通過assigned_to,date(open_date),priority'從master_vw_tracking_name_grp組中選擇assigned_to,date(open_date),優先級,count(*)...應該停止使用'substr'來獲取日期時間的部分。 –

回答

0

因爲你的問題是如此錯位,很難破譯正是你需要的,但我會盡我所能。我想你想要的東西如下:

SELECT date(open_date) AS time, priority, COUNT(*) as rows 
FROM `master_vw_tracking_name_grp` 
WHERE assigned_to in ('bryan.latoza', 'edison.alegre', 'maja.pasamba', 
    'gabriel.manlapig','grace.sanchez','francis.abellera','chris.dimaliuat', 
    'rayniel.delosreyes','michael.yu','jeffrey.bucaneg','emman.soriano', 
    'carmina.fernandez','jet.binamira','katrinekae.soriano','rogelio.nolasco', 
    'chard.batisatic') 
    AND open_date BETWEEN '2011-07-25 00:00' AND '2011-07-25 23:59' 
GROUP BY date(open_date), priority 
ORDER BY priority DESC; 

這將計數每個不同日期和優先級的行數。

+0

這太好了。非常感謝你。謝謝,我真的很感激。 – tin

0

嘗試使用這樣的事情

select time, sum(level_5), sum(level_4), sum(level_3) 
from (
     select substr(open_date,1,10) as time, 
     case when priority='3' then 1 else 0 end as level_3, 
     case when priority='4' then 1 else 0 end as level_4, 
     case when priority='5' then 1 else 0 end as level_5 
     from `master_vw_tracking_name_grp` 
     where 
      assigned_to in ('bryan.latoza', 'edison.alegre', 'maja.pasamba', 
      'gabriel.manlapig','grace.sanchez','francis.abellera','chris.dimaliuat', 
      'rayniel.delosreyes','michael.yu','jeffrey.bucaneg','emman.soriano', 
      'carmina.fernandez','jet.binamira','katrinekae.soriano','rogelio.nolasco', 
      'chard.batisatic') and substr(open_date,1,16) 
      between '2011-07-25 00:00' and '2011-07-25 23:59' 
) as temp group by time 
+0

順便說一句,不是'當優先級='3'時,那麼1 else 0 end'你可以做'IF(priority ='3',1,0)',這有點容易閱讀。我通常保留'case',以便我有超過1個條款的地方。 – Ariel

+0

感謝您的回覆。謝謝,但這沒有奏效。非常感謝你的評論。 – tin

+0

錯誤或不正確的結果? –

相關問題