Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wielokrotna statystyka danych w kolumnach jednego rekordu, jak konstruować zapytanie zwracające wiersz wyników obliczeń na danych
ky3orr
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Smertius
post
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
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!
Go to the top of the page
+Quote Post
Smertius
post
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
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 (IMG:style_emoticons/default/smile.gif)

pozdrawiam
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.12.2025 - 22:59