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

Utwórz zapytanie, aby uzyskać liczbę nieukończonych połączeń

Oto kolejna metoda, która działa bez skorelowanych podzapytań lub funkcji okna:

Dla każdego wiersza w1 , spróbuj znaleźć inny wiersz w2 z tym samym call_id i 0 wskazującym, że połączenie zostało zakończone. Używając LEFT OUTER JOIN, możemy przetestować przypadki, w których nie ma w2 wiersz istnieje dla danego call_id.

Następnie wykonaj kolejne sprzężenie z hipotetycznym wierszem w3 z tym samym call_id i mniejszą wartością ast_num_curr. Ponownie, używając sprzężenia zewnętrznego, możemy sprawdzić, czy taki wiersz nie istnieje. Oznacza to w1 musi mieć najmniejszą wartość ast num dla tego 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;

Wyjście:

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

Aby uzyskać liczniki na liczbę_kolejek_curr, zapakuj powyższe zapytanie w podzapytanie z tabeli pochodnej i wykonaj zliczenie w zapytaniu zewnętrznym:

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;

Wyjście:

+----------------+-------+
| 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. Co zrobić ze stylem adresu URL społeczności, takim jak Last.FM lub Wikipedia?

  2. Jak stworzyć paginację za pomocą PDO PHP

  3. Nieprzechwycony błąd:wywołanie niezdefiniowanej funkcji mysql_connect()

  4. Jak utworzyć hierarchiczne rekurencyjne zapytanie MySQL?

  5. Importowanie za pomocą MySQL WorkBench... błąd BŁĄD 1046 (3D000)