Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

SQL Bản ghi liên tiếp với số lượng

Bạn có thể sử dụng các biến để làm điều này.

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

Truy vấn này sử dụng 4 biến

1) @cur_outcome ban đầu được đặt thành một chuỗi trống. Sau đó, lựa chọn sẽ chỉ định system_outcome của hàng hiện tại.

2) @prev_outcome ban đầu được đặt thành một chuỗi trống. Sau đó, lựa chọn đặt nó thành @cur_outcome (đây là một chuỗi trống lần đầu tiên, v.v.).

3) @cur_pnum ban đầu được đặt thành một chuỗi trống. Sau đó, lựa chọn sẽ chỉ định phone_number của hàng hiện tại.

4) @prev_pnum ban đầu được đặt thành một chuỗi trống. Sau đó, lựa chọn đặt nó thành giá trị @cur_pnum (ban đầu là một chuỗi trống).

order by ở đây mệnh đề quan trọng để chỉ định các hàng hiện tại và trước đó dựa trên phone_number và ngày tháng.

Ban đầu, hãy chạy truy vấn bên trong để xem cách các biến được đặt, điều này sẽ làm rõ mọi thứ cho bạn.

Sample Demo

Bản trình diễn chứa một số dữ liệu mẫu nhiều hơn những gì được hiển thị trong câu hỏi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng SQL JOIN và COUNT

  2. Chọn các bản ghi từ hôm nay, tuần này, tháng này php mysql

  3. Chuyển đổi giây thành ngày, giờ, phút, giây (MySQL)

  4. Ví dụ tối thiểu về việc sử dụng select ... để cập nhật để cô lập các hàng

  5. Làm thế nào để viết một trình kích hoạt để hủy bỏ xóa trong MYSQL?