Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]maksymalna ilości rozmów toczonych jednocześnie, rozmowy telefoniczne
banana
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 29.09.2010

Ostrzeżenie: (0%)
-----


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

Ten post edytował banana 29.09.2010, 11:41:37
Go to the top of the page
+Quote Post
Noidea
post
Post #2





Grupa: Zarejestrowani
Postów: 226
Pomógł: 61
Dołączył: 20.08.2010

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
banana
post
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 29.09.2010

Ostrzeżenie: (0%)
-----


Cytat(Noidea @ 29.09.2010, 13:36:03 ) *
SET @c := 0;





Dziekuję!

Ten post edytował banana 29.09.2010, 13:55:50
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 11:16