2016-05-02 7 views
0

Ich habe folgende Abfrage, die bis gestern gut funktionierte ... aber wegen xyz Grund DROP und CREATE Zugriff wurde von ID widerrufen .... so gibt es eine Möglichkeit, folgende Abfrage durchzuführen in MySql:Ersatz für DROP ODER ERSTELLEN in MySql

DROP TABLE IF EXISTS temp; 
CREATE TEMPORARY TABLE temp 
(
call_start_date_time DATE, 
cust_ph_no INT(11), 
actual_repeat_calls INT(11), 
total_calls INT(11), 
INDEX(call_start_date_time)); 

INSERT IGNORE INTO temp(call_start_date_time,cust_ph_no,actual_repeat_calls,total_calls) 
(SELECT DATE(call_start_date_time),cust_ph_no,count(*)-1 as actual_repeat_calls,count(*) as total_calls 
FROM call_data 
WHERE DATE(call_start_date_time) = '2016-04-30' 
AND campaign_name = 'VT' 
AND report_id = '-2' 
AND call_status_disposition NOT LIKE 'ST' 
AND campaign_type = 'ID' 
GROUP BY DATE(call_start_date_time),cust_ph_no); 

SELECT call_start_date_time,(SUM(actual_repeat_calls)/SUM(total_calls)) 
as 
repeat_ratio 
FROM temp 
GROUP BY call_start_date_time; 

Antwort

0

Um temporäre Tabellen zu erstellen, müssen Sie die Berechtigung CREATE TEMPORARY TABLES haben.

Eine einfache Alternative einfach sein würde, um alle Zeilen aus der Tabelle zu löschen:

delete from temp; 

oder TRUNCATE zu verwenden:

truncate table temp; 

aber es ist nicht genau die gleichen (temporären Tabellen pro Sitzung sind, und mehrere Sitzungen können den gleichen temporären Tabellennamen ohne Konflikte verwenden).

0
select s.*,sum(s.actual_repeat_calls)/sum(s.total_calls) as repeat_ratio 
from 
(
SELECT DATE(call_start_date_time) as startdatetime,cust_ph_no,count(*)-1 as actual_repeat_calls,count(*) as total_calls 
FROM call_data 
WHERE DATE(call_start_date_time) = '2016-04-30' 
AND  campaign_name = 'VT' 
AND  report_id = '-2' 
AND  call_status_disposition NOT LIKE 'ST' 
AND  campaign_type = 'ID' 
GROUP BY DATE(call_start_date_time) ,cust_ph_no 
) s 

Gruppe von s.startdatetime;

+0

Sie sollten dies mit einer Unterabfrage tun können. Ich habe cust_ph_no aus der Gruppe fallen lassen, weil es keinen Zweck hatte. Auch das Wiederholungsverhältnis kommt immer wieder auf 0 zurück? –

+0

Es gibt mir falsche Zahlen ... Abfrage sollte datumsweise Summe der Wiederholer Anrufer Beispiel ausführen, wenn A uns 4 mal anrief & B rief uns 6 mal an, dann sollte es 3 + 5 (4-1 & 6-1) sein und schließlich rationieren sollte sei 3 + 5/total_calls –