2012-03-24 26 views
0

私はこの時間の間に私にすべての呼び出しを表示するクエリを持っています。それは "曜日(9-5)"と "夜(5-12)"を1つのクエリ?MySQLのクエリを組み合わせる

select dst, count(dst) as Day from cdr 
WHERE lastapp='Queue' 
AND Date(calldate) = '2012-03-23' 
AND TIME(calldate) BETWEEN '08:00' AND '17:00' 
GROUP BY dst; 

+------+-----+ 
| dst | Day | 
+------+-----+ 
| 1010 | 10 | 
| 1011 | 21 | 
| 1012 | 7 | 
+------+-----+ 

2つのクエリを実行することなくPHPの配列で取得できるので、これが理想的です。

+------+-----+-------+ 
| dst | Day | Night | 
+------+-----+-------+ 
| 1010 | 10 | 20 | 
| 1011 | 21 | 12 | 
| 1012 | 7 | 4 | 
+------+-----+-------+ 

答えて

0

はい。あなたはこのような何かを書くことができます。

SELECT dst, 
     COUNT(IF(TIME(calldate) BETWEEN '08:00' AND '17:00', 1, NULL)) AS Day, 
     COUNT(IF(TIME(calldate) > '17:00', 1, NULL)) AS Night 
    FROM cdr 
WHERE lastapp = 'Queue' 
    AND DATE(calldate) = '2012-03-23' 
GROUP 
    BY dst 
; 

COUNT(...)カウント...が非nullであったために行数IF(boolean, value_if_true, value_if_false)が—がhttp://dev.mysql.com/doc/refman/5.6/en/control-flow-functions.html#function_if —を見るように私はそれがMySQL固有の機能だということを言及する必要がありますけれども、それは聞こえるんあなたの質問にMySQLとして特別なタグをつけていないのであれば、代わりにCASE WHEN boolean THEN value_if_true ELSE value_if_false ENDを提案していただろう。ほとんどの、またはすべてのDMBSがサポートする標準的な構文なので、

+0

パーフェクト、空白を埋める。 – Gnobiwan

関連する問題