Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sumowanie unikalnych rekordów - problem MySQL
djmentos
post
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 29.01.2009

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


Witam. Mam tabelę z rekordami od panelu statystyk. Poniższe zapytanie ma pobrać sumę wszystkich danych z jednego dnia, dla wszystkich stron.

  1. SELECT
  2. (SELECT COUNT(DISTINCT(stat_wizyta.wiz_ip)) FROM stat_wizyta WHERE wiz_data = '{$dataa}') AS uniq,
  3. (SELECT COUNT(stat_wizyta.id) FROM stat_wizyta WHERE wiz_data = '{$dataa}') AS odslony,
  4. (SELECT COUNT(ref_domain) FROM stat_refer WHERE ref_data = '{$dataa}') AS refy,
  5. (SELECT COUNT(kwd_data) FROM stat_keyword WHERE kwd_data = '{$dataa}') AS wyszukiwarki,
  6. (SELECT COUNT(wib_bot) FROM stat_wizbot WHERE wib_data = '{$dataa}') AS boty


Problem pojawia się w pierwszej lini.
tabel stat_wizyta ma kilka pól w tym:
wiz_ip - ip odwiedzającego
wiz_ser - id serwisu, na którym był gość.

I chodzi o to że DISTINCT sumuje rekordy z całej tabeli, nie biorąc pod uwage serwisu.

np. dla danych
stat_wizyta
wiz_ip | wiz_ser
1 | 1
2 | 1
3 | 1
1 | 2
Chciałbym otrzymać liczbę 4, co prawda IP "1" powtarza się, ale dla różnych serwisów i powinno być zliczone podwójnie, natomiast ja otrzymuję w wyniku 3.
Go to the top of the page
+Quote Post
memory
post
Post #2





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

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


DISTINCT usuwa powtarzajace sie dane w twoim wypadku 1, Count wylicza rekordy

Ten post edytował memory 10.02.2009, 22:45:34
Go to the top of the page
+Quote Post
djmentos
post
Post #3





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 29.01.2009

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


a mogę jakimś innym sposobem osiągnąć interesujący mnie wynik?
Go to the top of the page
+Quote Post
kefirek
post
Post #4





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


A takie coś ?
  1. SELECT
  2. COUNT(stat_wizyta.id),
  3. COUNT(stat_wizyta.wiz_ip),
  4. (SELECT COUNT(ref_domain) FROM stat_refer WHERE ref_data = '{$dataa}') AS refy,
  5. (SELECT COUNT(kwd_data) FROM stat_keyword WHERE kwd_data = '{$dataa}') AS wyszukiwarki,
  6. (SELECT COUNT(wib_bot) FROM stat_wizbot WHERE wib_data = '{$dataa}') AS boty
  7. FROM stat_wizyta WHERE wiz_data = '{$dataa}' GROUP BY stat_wizyta.wiz_ip


Ten post edytował kefirek 11.02.2009, 08:54:06
Go to the top of the page
+Quote Post
djmentos
post
Post #5





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 29.01.2009

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


ten wyświetla mi ilość odwiedzin na jednego użytkownika (jego IP)
mi bardziej chodzi o podsumowanie całego dnia. Aby rekord mi zwrócił postać:
Użytkownicy unikalni | odsłony | wejscia z wyszukiwarek | odsyłacze | roboty

wszystko działa doskonale poza unikalnymi.
Go to the top of the page
+Quote Post
mls
post
Post #6





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


  1. (SELECT COUNT(stat_wizyta.wiz_ip) FROM stat_wizyta WHERE wiz_data = '{$dataa}' GROUP BY stat_wizyta.wiz_ip) AS uniq
Go to the top of the page
+Quote Post
djmentos
post
Post #7





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 29.01.2009

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


To co mi podałeś, wyświetla wszystkie ilość wejść dla adresu IP. I wyświetla ich wszystkie, ale przerobiłem lekko:
  1. (SELECT COUNT(DISTINCT(stat_wizyta.wiz_ip)) FROM stat_wizyta WHERE wiz_data = '2009-02-14' GROUP BY stat_wizyta.wiz_ser)


I mam wynik:
COUNT(DISTINCT(stat_wizyta.wiz_ip))
88
163
137
12
44
4

//jest to liczba unikalnych wejść dla każdego serwisu.
Teraz tyko kwestia zsumowania tego...

wiem, że na pewno funkcja SUM() ale nie wychodzi mi za bardzo z jej użyciem.

Ten post edytował djmentos 15.02.2009, 22:09:25
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 19:53