Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Buat kueri untuk mendapatkan jumlah panggilan yang belum selesai

Berikut metode lain yang berfungsi tanpa subkueri atau fungsi jendela yang berkorelasi:

Untuk setiap baris w1 , coba cari baris lain w2 dengan call_id yang sama dan 0 menunjukkan panggilan selesai. Menggunakan LEFT OUTER JOIN, kita dapat menguji kasus di mana tidak ada w2 baris ada untuk call_id tertentu.

Kemudian lakukan join lagi ke baris hipotetis w3 dengan call_id yang sama dan nilai ast_num_curr yang lebih rendah. Sekali lagi, menggunakan gabungan luar, kita dapat memeriksa bahwa tidak ada baris seperti itu. Ini berarti w1 harus memiliki nilai ast num terkecil untuk call_id tersebut.

SELECT w1.call_id, w1.queue_num_curr
FROM waiter_log AS w1
LEFT OUTER JOIN waiter_log AS w2
  ON w1.call_id = w2.call_id AND w2.proceed_wait = 0 
LEFT OUTER JOIN waiter_log AS w3
  ON w1.call_id = w3.call_id AND w1.ast_num_curr > w3.ast_num_curr
WHERE w2.call_id IS NULL AND w3.call_id IS NULL;

Keluaran:

+---------+----------------+
| call_id | queue_num_curr |
+---------+----------------+
| 49c43ad |           9004 |
| asdf231 |           9010 |
| rete125 |           9010 |
+---------+----------------+

Untuk mendapatkan hitungan per queue_num_curr, bungkus kueri di atas dalam subkueri tabel turunan, dan lakukan penghitungan di kueri luar:

SELECT queue_num_curr, COUNT(*) AS count
FROM (
  SELECT w1.call_id, w1.queue_num_curr
  FROM waiter_log AS w1
  LEFT OUTER JOIN waiter_log AS w2
    ON w1.call_id = w2.call_id AND w2.proceed_wait = 0
  LEFT OUTER JOIN waiter_log AS w3
    ON w1.call_id = w3.call_id AND w1.ast_num_curr > w3.ast_num_curr
  WHERE w2.call_id IS NULL AND w3.call_id IS NULL
) AS t
GROUP BY queue_num_curr;

Keluaran:

+----------------+-------+
| queue_num_curr | count |
+----------------+-------+
|           9004 |     1 |
|           9010 |     2 |
+----------------+-------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. String pelarian nyata dan PDO

  2. Symfony3 cara menyimpan peran pengguna dalam database

  3. Batasan kunci asing MySQL 5.5 gagal ketika kunci asing ada

  4. Subquery JPA masuk dari klausa

  5. UPDATE Syntax dengan ORDER BY, LIMIT dan Multiple Tables