Mysql
 sql >> база данни >  >> RDS >> Mysql

SQL Последователни записи с брой

Можете да използвате променливи, за да направите това.

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

Тази заявка използва 4 променливи

1) @cur_outcome, който първоначално е настроен на празен низ. След това изборът присвоява system_outcome на текущия ред.

2) @prev_outcome, който първоначално е настроен на празен низ. След това изборът го задава на @cur_outcome (който е празен низ за първи път и така нататък).

3) @cur_pnum, който първоначално е настроен на празен низ. След това изборът присвоява телефонния номер на текущия ред.

4) @prev_pnum, който първоначално е настроен на празен низ. След това изборът го задава на стойност @cur_pnum (която първоначално е празен низ).

order by клаузата е важна тук за обозначаване на текущите и предишните редове въз основа на телефонен номер и дата.

Изпълнете първоначално вътрешната заявка, за да видите как са зададени променливите, което ще ви изясни нещата.

Sample Demo

Демонстрацията съдържа някои примерни данни повече от това, което беше показано във въпроса.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо innodb SHOW TABLE STATUS е толкова ненадежден?

  2. Поправете отказан достъп за потребител 'root'@'localhost' за phpMyAdmin

  3. Не може да се прехвърли обект от тип 'System.DBNull' към тип 'System.Byte[]'.

  4. Създаване на персонализирана заявка с Spring DATA JPA?

  5. MySQL променя типа на удостоверяване от стандартен на caching_sha2_password