sql >> Databasteknik >  >> RDS >> Mysql

Skapa förfrågan för att få antalet ej slutförda samtal

Här är en annan metod som fungerar utan korrelerade underfrågor eller fönsterfunktioner:

För varje rad w1 , försök att hitta en annan rad w2 med samma call_id och en 0 som indikerar att samtalet är klart. Genom att använda en LEFT OUTER JOIN kan vi testa för fall där ingen w2 rad finns för ett givet call_id.

Gör sedan en ny koppling till en hypotetisk rad w3 med samma call_id och ett lägre ast_num_curr-värde. Återigen, med hjälp av yttre koppling, kan vi kontrollera att det inte finns någon sådan rad. Detta betyder w1 måste ha det minsta värdet för ast num för det call_id.

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;

Utdata:

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

För att få antalet per queue_num_curr, slå in frågan ovan i en härledd tabell-underfråga och gör räkningen i den yttre frågan:

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;

Utdata:

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


  1. PHPUnit-testning MISSLYCKAS ENDAST när du besöker rotsidan( visit('/') ) i Laravel 5

  2. MySQL-sortering med symboler som första bokstav

  3. Oracle Fast Recovery Area

  4. mysqli-anslutningen fungerar inte inuti funktionen?