2017-02-14 5 views
0

ich in einem Problem stecken geblieben, wo ich die gewünschte Ausgabe für eine Tabelle in der Ausgabe letzte Grafen von Führung nach dem näher der bisherigen FührungMYSQL Auswahlabfrage für einen Bericht

id | phone | ---- | is_lead_closed |  closed_date 
-- | -----------| ---- | ---------------| ------------------- 
1 | 9999999999 | ---- |  null  | 0000-00-00 00:00:00 
2 | 9999999999 | ---- |  1  | 2017-02-01 10:00:00 
3 | 9999999999 | ---- |  null  | 0000-00-00 00:00:00 
4 | 9999999999 | ---- |  null  | 0000-00-00 00:00:00 
5 | 9999999999 | ---- |  null  | 0000-00-00 00:00:00 
6 | 9999999999 | ---- |  null  | 0000-00-00 00:00:00 
7 | 9999999999 | ---- |  1  | 2017-02-10 10:00:00 

Hier muß ich wählen dh , 5 das ist die Zählung nach dem letzten Schließen.

ok ich bis zu diesem Punkt gekommen Dies ist meine Datentabelle

id | lms_lead_id | ameyo_lead_id | call_time | is_lead_closed | lead_close_date 
177452 | 1387790 | 682 | "2017-02-06 10:07:31" | NULL | "0000-00-00 00:00:00" 
182023 | 1387790 | 682 | "2017-02-06 15:09:00" | NULL | "0000-00-00 00:00:00" 
182197 | 1387790 | 682 | "2017-02-06 15:20:12" | 1 | "2017-02-06 19:30:47" 
182283 | 1387790 | 682 | "2017-02-06 15:29:21" | NULL | "0000-00-00 00:00:00" 
183857 | 1387790 | 682 | "2017-02-06 17:30:20" | NULL | "0000-00-00 00:00:00" 
187708 | 1387790 | 682 | "2017-02-07 12:38:38" | NULL | "0000-00-00 00:00:00" 
188767 | 1387790 | 682 | "2017-02-07 13:31:50" | NULL | "0000-00-00 00:00:00" 
191257 | 1387790 | 682 | "2017-02-07 15:36:42" | NULL | "0000-00-00 00:00:00" 
192978 | 1387790 | 682 | "2017-02-07 16:44:33" | NULL | "0000-00-00 00:00:00" 
195362 | 1387790 | 682 | "2017-02-07 17:47:02" | NULL | "0000-00-00 00:00:00" 
196710 | 1387790 | 682 | "2017-02-07 18:33:23" | 1 | "2017-02-07 20:00:33" 
209832 | 1387790 | 396 | "2017-02-09 15:33:49" | NULL | "0000-00-00 00:00:00" 

ich Abfrage erstellt haben bisher

select 
a.lms_lead_id, 
LENGTH(SUBSTRING_INDEX(group_concat(close_status 
SEPARATOR ''), 
'1', 
- 2)) as attempts, 
DATEDIFF(max(call_time), min(call_time)) AS days 
from 
(select 
llct.lms_lead_id, 
if(llct.is_lead_closed = 1, 1, 0) as close_status, 
llct.call_time 
from 
lms_ameyo_call_tracker llct 
inner join lms_ameyo_call_tracker llct_1 ON llct.lms_lead_id = llct_1.lms_lead_id 
and llct_1.is_lead_closed = 1 
and date(llct_1.lead_close_date) between '2017-02-07' and '2017-02-07' 
and llct.ameyo_lead_id = llct_1.ameyo_lead_id 
where 
llct.ameyo_lead_id = 682) as a 
group by a.lms_lead_id; 

ist, wo lms_ameyo_call_tracker den Tabellenname ist jetzt i mit Abrufen call_time stecken

+0

Ich bekomme Ihre Anforderung nicht. Konnten Sie spezifisch – FreedomPride

+0

sein Meine Anforderung ist, die Zählimpulse von der Tabelle vor vorherigem zu holen geschlossen d. H., Die Daten mit Identifikation 3 bis 7 –

+0

Willkommen zum Stapel-Überlauf! Bitte [bearbeiten] Sie Ihre Frage, um [was Sie bisher versucht haben] (http://whathaveyoutried.com) zu zeigen. Sie sollten eine [mcve] des Codes einbeziehen, mit dem Sie Probleme haben, dann können wir versuchen, mit dem spezifischen Problem zu helfen. Sie sollten auch [fragen] lesen. –

Antwort

0

Ich nehme an, wenn der Wert der Spalte is_lead_closed 1 ist, dann ist es die Schließung der entsprechenden Leitung. In diesem Fall müssen Sie die zweithöchste maximale ID mit is_lead_closed = 1 und die höchste ID mit is_lead_closed = 1 ermitteln. Dann zählen Sie die Anzahl der Zeilen zwischen diesen beiden IDs.

Folgende Abfrage sollte den Job erledigen, kann aber optimiert werden.

Wählen Sie count (*) aus der Tabelle mit der ID> (max (id) aus der Tabelle auswählen wo id nicht in (max (id) aus Tabelle auswählen is_lead_closed = 1) und is_lead_closed = 1) und id < = (auswählen max (id) aus Tabelle wobei is_lead_closed = 1)

+0

Danke @Sisir Ich habe die Abfrage überprüft, aber stecken zwischen Ausführung als die Tabelle enthält Millionen von Datensätzen in ihm. –

+0

Ja, das ist eine Art Entwickleranfrage, ich bin kein DBA. Um die Ausführung zu beschleunigen, erstellen Sie bitte einen Index auf ** is_lead_closed ** –

Verwandte Themen