2016-11-16 17 views
1

結果を表示する方法を変更する以下のクエリがあります。私はピボットを使用して調べましたが、私はそれをどのように機能させるか把握することはできませんし、救いの手を感謝するでしょう。SELECT結果のレイアウトを変更

(短縮)クエリ:

select 
# total counts 
count(if(verb in ('COMPLETEAGENT','COMPLETECALLER') and queue in (9100, 9102, 9104) and data1 <= 5,1, null)) as under_5_sec, 
count(if(verb in ('COMPLETEAGENT','COMPLETECALLER') and queue in (9100, 9102, 9104) and data1 <= 10,1, null)) as under_10_sec, 

# percentage answered of calls within timeframe 
count(if(verb in ('COMPLETEAGENT','COMPLETECALLER') and queue in (9100, 9102, 9104) and data1 <= 5,1, null))/COUNT(if(verb in ('COMPLETEAGENT','COMPLETECALLER') and queue in (9100, 9102, 9104, 9106, 9108, 9600, 9602, 9500, 9502, 9800, 9802),1, null)) * 100 as under_5_perct, 
count(if(verb in ('COMPLETEAGENT','COMPLETECALLER') and queue in (9100, 9102, 9104) and data1 <= 10,1, null))/COUNT(if(verb in ('COMPLETEAGENT','COMPLETECALLER') and queue in (9100, 9102, 9104, 9106, 9108, 9600, 9602, 9500, 9502, 9800, 9802),1, null)) * 100 as under_10_perct, 

# percentage answered of offered calls 
count(if(verb in ('COMPLETEAGENT','COMPLETECALLER') and queue in (9100, 9102, 9104) and data1 <= 5,1, null))/COUNT(if(verb in ('ENTERQUEUE') and queue in (9100, 9102, 9104, 9106, 9108, 9600, 9602, 9500, 9502, 9800, 9802),1, null)) * 100 as under_5_offer, 
count(if(verb in ('COMPLETEAGENT','COMPLETECALLER') and queue in (9100, 9102, 9104) and data1 <= 10,1, null))/COUNT(if(verb in ('ENTERQUEUE') and queue in (9100, 9102, 9104, 9106, 9108, 9600, 9602, 9500, 9502, 9800, 9802),1, null)) * 100 as under_10_offer 

from queue_log 

where partition = 'P001' 
and time_id >= unix_timestamp('2016-10-30') and time_id < unix_timestamp('2016-10-31') 

結果は次のように表示されますどのように私ができる

descr  | per_sec | percent | offered 
under_5_sec | 346  | 91.7772 | 87.3737 
under_10_sec| 353  | 93.6340 | 89.1414 

任意の提案を:

under_5_sec | under_10_sec | under_5_perct | under_10_perct | under_5_offer | under_10_offer 
346   | 353   | 91.7772  | 93.6340   | 87.3737  | 89.1414 

私のようにデータを表示したいですこれを達成するには?

+0

可能性のある重複した[MySQLのピボットテーブル](http://stackoverflow.com/questions/7674786/mysql-pivot-table) – CGritton

答えて

1
select 
'under_5_sec' as descr, 
count(if(verb in ('COMPLETEAGENT','COMPLETECALLER') and queue in (9100, 9102, 9104) and data1 <= 5,1, null)) as per_sec, 
count(if(verb in ('COMPLETEAGENT','COMPLETECALLER') and queue in (9100, 9102, 9104) and data1 <= 5,1, null))/COUNT(if(verb in ('COMPLETEAGENT','COMPLETECALLER') and queue in (9100, 9102, 9104, 9106, 9108, 9600, 9602, 9500, 9502, 9800, 9802),1, null)) * 100 as perct, 
count(if(verb in ('COMPLETEAGENT','COMPLETECALLER') and queue in (9100, 9102, 9104) and data1 <= 5,1, null))/COUNT(if(verb in ('ENTERQUEUE') and queue in (9100, 9102, 9104, 9106, 9108, 9600, 9602, 9500, 9502, 9800, 9802),1, null)) * 100 as offer, 
from queue_log 
where partition = 'P001' 
and time_id >= unix_timestamp('2016-10-30') and time_id < unix_timestamp('2016-10-31') 
UNION 
select 
'under_10_sec' as descr, 
count(if(verb in ('COMPLETEAGENT','COMPLETECALLER') and queue in (9100, 9102, 9104) and data1 <= 10,1, null)) as per_sec, 
count(if(verb in ('COMPLETEAGENT','COMPLETECALLER') and queue in (9100, 9102, 9104) and data1 <= 10,1, null))/COUNT(if(verb in ('COMPLETEAGENT','COMPLETECALLER') and queue in (9100, 9102, 9104, 9106, 9108, 9600, 9602, 9500, 9502, 9800, 9802),1, null)) * 100 as perct, 
count(if(verb in ('COMPLETEAGENT','COMPLETECALLER') and queue in (9100, 9102, 9104) and data1 <= 10,1, null))/COUNT(if(verb in ('ENTERQUEUE') and queue in (9100, 9102, 9104, 9106, 9108, 9600, 9602, 9500, 9502, 9800, 9802),1, null)) * 100 as offer 
from queue_log 
where partition = 'P001' 
and time_id >= unix_timestamp('2016-10-30') and time_id < unix_timestamp('2016-10-31') 
+0

おかげで、私は望ましい結果が得られないこと。このような共用体を使用しても、(各共用体ごとに)問合せが2回実行されますか? – Stephen

+0

あなたはそのような結果のために組合が必要です。私はmysqlの内部を知らない。しかし、私は、クエリはレコードごとに1回評価され、2回は評価されないと思います。私は、テーブルレコードは両方のクエリを次々に比較されないことを意味します。 –

+0

Unionは2つのデータセットを作成し、それらを1つのクエリ結果を形成するために「結合」します。 –