Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wielokrotna statystyka danych w kolumnach jednego rekordu, jak konstruować zapytanie zwracające wiersz wyników obliczeń na danych
ky3orr
post 17.10.2012, 17:26:08
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 25.10.2004
Skąd: Wrocław

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


Czołem,

mam nastepujący problem.
-powiedzmy, że mam jedna tabelę w której mam dane typu:
ID_SERII, ID_POMIARU, NAZWA, DATA_1, DATA_2, WYNIK

DATA_1 jest początkiem pomiaru, DATA_2 jego końcem.
WYNIK jest jedną ze zdefiniowanych wartości: W1, W2, W3

I teraz chcę wyciągnąć statystykę za okres pomiędzy dwiema datami tak, żeby pojawiły się następujące wiersze:
NAZWA, ILOSC_WYSTAPIEN_ID_POMIARU AS AMOUNT, ILOSC_WYSTAPIEN_WYNIK=W1 AS W1, ILOSC_WYSTAPIEN_WYNIK=W2 AS W2, ILOSC_WYSTAPIEN_WYNIK=W3 AS W3

Zatem dane:

1, 100, A, 2012-05-20, 2012-05-21, "W1";
1, 101, B, 2012-05-20, 2012-05-21, "W1";
1, 102, C, 2012-05-20, 2012-05-21, "W2";
1, 103, A, 2012-05-20, 2012-05-21, "W2";
2, 104, B, 2012-05-22, 2012-05-23, "W3";
2, 105, B, 2012-05-22, 2012-05-23, "W1";
2, 106, C, 2012-05-22, 2012-05-23, "W3";
3, 107, C, 2012-05-25, 2012-05-26, "W1";

wyciągniete za okres powiedzmy 2012-05-20 do 2012-05-27 powinny dać taki oto wynik:

A, 2, 1, 1, 0;
B, 3, 2, 0, 1;
C, 3, 1, 1, 1;


Umiem już wyciągnąć dane z tabeli pomiarowej za zadany okres i policzyć ILOSC_WYSTAPIEN_ID_POMIARU ponieważ jest to COUNT(ID_POMIARU) po tym jak robię GROUP BY ID_POMIARU.

Problem w tym jak w tym samym wierszu dodać jeszcze obliczenia dla 3 ostatnich kolumn? Czy to mają być jakieś selecty w sekcji SELECT zapytania głównego?
Czy można jakoś wirtualnie skorzystać z danych wyciągając je do wirtualnej tabeli czy dla każdej z 3 ostatnich kolumn trzeba je wyciągać na nowo by obliczyć każde ILOSC_WYSTAPIEN_WYNIK?
Trudność jest tym większa, że mam to opracować w formie jednego zapytania.

dzięki za sugestie.

pozdrawiam


--------------------
yegomość KY3ORR
Go to the top of the page
+Quote Post
Smertius
post 18.10.2012, 20:55:40
Post #2





Grupa: Zarejestrowani
Postów: 156
Pomógł: 31
Dołączył: 23.02.2009
Skąd: Sanok

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


  1. SELECT nazwa,COUNT(ID_POMIARU) , COUNT(IF(WYNIK = 'W1', 1, NULL)) AS wystapienia_w1 FROM tabeleczka GROUP BY ID_POMIARU


Powyżej masz przykład dla jednej wartości (W1), dla reszty robisz analogicznie.
Go to the top of the page
+Quote Post
ky3orr
post 19.10.2012, 07:52:10
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 25.10.2004
Skąd: Wrocław

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


Czołem Smertius,

Pytanko: czy "tabeleczka" to jest cała tabela z poimi pomiarami czy jakaś, której wyniki są już zawężone do żądanego przedziału czasu?

dzięki za pomoc!


--------------------
yegomość KY3ORR
Go to the top of the page
+Quote Post
Smertius
post 20.10.2012, 15:36:52
Post #4





Grupa: Zarejestrowani
Postów: 156
Pomógł: 31
Dołączył: 23.02.2009
Skąd: Sanok

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


Tak to tabela z twoimi pomiarami.
Go to the top of the page
+Quote Post
ky3orr
post 24.10.2012, 20:57:48
Post #5





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 25.10.2004
Skąd: Wrocław

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


Statystyki działają jak należy. I do tego szybko smile.gif

pozdrawiam


--------------------
yegomość KY3ORR
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 Wersja Lo-Fi Aktualny czas: 17.06.2025 - 22:58