Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]maksymalna ilości rozmów toczonych jednocześnie
Forum PHP.pl > Forum > Przedszkole
banana
Witam,
szukam maksymalnej ilości rozmów toczonych jednocześnie - mamy kilkanaście linii telefonicznych, z których korzystają Klienci:
mam datę startu i datę końca rozmowy (poniżej mały wycinek - poglądowy bazy)...

  1. SELECT count(*) AS ile FROM `telefony_czasy` WHERE od >='$od' AND DO <= '$do'
- niestety pokazuje tylko rozmowy toczące się podczas konkretnej rozmowy - ale nie bada kolejnych relacji pomiędzy następnymi rekordami...

na razie testuję BETWEEN i pętla z inkrementacja pasujących rekordów...

2010-08-03 08:23:50 2010-08-03 08:36:23
2010-08-03 08:27:46 2010-08-03 08:47:32
2010-08-03 08:28:01 2010-08-03 08:36:10
2010-08-03 08:33:10 2010-08-03 08:33:43
2010-08-03 08:34:32 2010-08-03 09:33:48
2010-08-03 08:37:26 2010-08-03 08:38:29
2010-08-03 08:39:00 2010-08-03 08:40:22
2010-08-03 08:39:34 2010-08-03 08:39:41
2010-08-03 08:40:05 2010-08-03 08:40:12
2010-08-03 08:41:54 2010-08-03 08:42:14
2010-08-03 08:42:39 2010-08-03 08:44:39
2010-08-03 08:43:21 2010-08-03 08:48:57
2010-08-03 08:46:01 2010-08-03 08:49:02
2010-08-03 08:56:26 2010-08-03 08:57:06
2010-08-03 08:57:33 2010-08-03 08:59:54
2010-08-03 08:57:51 2010-08-03 08:57:51
2010-08-03 09:02:19 2010-08-03 09:06:43
2010-08-03 09:03:09 2010-08-03 09:05:18
2010-08-03 09:03:16 2010-08-03 09:05:42
2010-08-03 09:06:50 2010-08-03 09:07:33
2010-08-03 09:07:15 2010-08-03 09:09:13
2010-08-03 09:07:34 2010-08-03 09:10:46

proszę o pomoc
banana
Noidea
Zrób sobie log czasowy rozmów, który będzie zawierał status: 1=rozpoczęcie rozmowy, -1=zakończenie rozmowy. Wszystko posortowane po dacie zdarzenia:
  1. SELECT 1 AS `status`, `od` AS `data`
  2. FROM `rozmowy`
  3. UNION ALL
  4. SELECT -1 AS `status`, `do` AS `data`
  5. FROM `rozmowy`
  6. ORDER BY `data`


Teraz musisz tylko sumować po kolei statusy:
  1. SET @c := 0;

  1. SELECT @c := @c + `status` AS `c`
  2. FROM
  3. (
  4. SELECT 1 AS `status`, `od` AS `data`
  5. FROM `rozmowy`
  6. UNION ALL
  7. SELECT -1 AS `status`, `do` AS `data`
  8. FROM `rozmowy`
  9. ORDER BY `data`
  10. ) `log`


Maksymalne `c` to to, czego szukasz
banana
Cytat(Noidea @ 29.09.2010, 13:36:03 ) *
SET @c := 0;





Dziekuję!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.