Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Kolejne rekordy SQL z liczbą

W tym celu możesz użyć zmiennych.

select phone_number from (
select c.*,
@prev_outcome:[email protected]_outcome,
@cur_outcome:=system_outcome,
@prev_pnum:[email protected]_pnum,
@cur_pnum:=phone_number,
case when @cur_pnum = @prev_pnum and @prev_outcome <> @cur_outcome then @rn:[email protected]+1
     when @cur_pnum = @prev_pnum and @prev_outcome = @cur_outcome then @rn:[email protected]
else @rn:=1 end as rank
from calls c, 
(select @rn:=0,@prev_pnum:='',@cur_pnum:='',@prev_outcome:='',@cur_outcome:='') r
order by phone_number,dt
    ) x
where system_outcome='No Answer'
group by phone_number,rank
having count(*) > 6

To zapytanie używa 4 zmiennych

1) @cur_outcome, który jest początkowo ustawiony na pusty ciąg. Następnie zaznaczenie przypisuje wynik systemowy bieżącego wiersza.

2) @prev_outcome, który jest początkowo ustawiony na pusty ciąg. Następnie zaznaczenie ustawia go na @cur_outcome (który jest pustym ciągiem za pierwszym razem i tak dalej).

3) @cur_pnum, który początkowo jest ustawiony na pusty ciąg. Następnie zaznaczenie przypisuje numer telefonu bieżącego wiersza.

4) @prev_pnum, który jest początkowo ustawiony na pusty ciąg. Następnie zaznaczenie ustawia ją na wartość @cur_pnum (która początkowo jest pustym ciągiem).

order by klauzula jest tutaj ważna, aby określić bieżący i poprzedni wiersz na podstawie numeru telefonu i daty.

Najpierw uruchom wewnętrzne zapytanie, aby zobaczyć, jak ustawione są zmienne, co wyjaśni ci sprawę.

Sample Demo

Demo zawiera więcej przykładowych danych, niż pokazano w pytaniu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - Błąd zduplikowanego wpisu podczas próby dodania nowej kolumny

  2. Dlaczego zapytania wykonywane z mysql workbench trwają znacznie dłużej niż wykonywanie ich bezpośrednio z mysql cli?

  3. Wyzwania związane ze skalowaniem bazy danych Moodle MySQL

  4. Jak uzyskać rekordy między 2 datami w MySQL?

  5. Python:użyć mysqldb do zaimportowania tabeli MySQL jako słownika?