ďťż
 
Male zapytanie - prosba o pomoc ďťż
 
Male zapytanie - prosba o pomoc
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Male zapytanie - prosba o pomoc



Juan Rodrigez - 12-09-2007 00:15
Male zapytanie - prosba o pomoc
  Witam,

Mam tabele w której są m.in. takie kolumny,
URZADZENIE varchar
POMIAR float
CZAS_POMIARU timestamp

Do tej tabeli zapisywane są w nieregularny sposób wyniki pomiarów dla
poszczególnych urządzeń.

próbuje ułożyć zapytanie które zwróci mi
średnią (lub sumę) z ostatnich pomiarów dla wybranej listy urządzeń

dla sumy wystarczy pewnie zmienić AVG na SUM

Dla pojedynczego urzadzenia mam tak:

select AVG(POMIAR) from TABELA where URZADZENE='abc' AND CZAS_POMIARU=(select
max(CZAS_POMIARU) from TABELA where URZADZENIE='abc')

A jak to zrobić dla podanej listy urządzeń?
kombinowałem troche z URZADZENE IN ('abc' , 'xyz')
ale bez spodziewanych rezultatów.

pozdrawiam
Juan

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl





=?ISO-8859-2?Q?Marcin_Wr=F3blewski?= - 13-09-2007 00:04

  Juan Rodrigez <juan_rodrigezWYTNIJTO@poczta.onet.pl> napisał(a):

> Witam,
>
> Mam tabele w której są m.in. takie kolumny,
> URZADZENIE varchar
> POMIAR float
> CZAS_POMIARU timestamp
>
> Do tej tabeli zapisywane są w nieregularny sposób wyniki pomiarów dla
> poszczególnych urządzeń.
>
> próbuje ułożyć zapytanie które zwróci mi
> średnią (lub sumę) z ostatnich pomiarów dla wybranej listy urządzeń
>
> dla sumy wystarczy pewnie zmienić AVG na SUM
>
> Dla pojedynczego urzadzenia mam tak:
>
> select AVG(POMIAR) from TABELA where URZADZENE='abc' AND
CZAS_POMIARU=(select
> max(CZAS_POMIARU) from TABELA where URZADZENIE='abc')
>
> A jak to zrobić dla podanej listy urządzeń?
> kombinowałem troche z URZADZENE IN ('abc' , 'xyz')
> ale bez spodziewanych rezultatów.
>
> pozdrawiam
> Juan
>
>
>

Jak kombinowałeś, jakie miały być rezultaty i jakie były rezultaty?

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/




=?ISO-8859-2?Q?Marcin_Wr=F3blewski?= - 13-09-2007 00:04

  Juan Rodrigez <juan_rodrigezWYTNIJTO@poczta.onet.pl> napisał(a):

> Witam,
>
> Mam tabele w której są m.in. takie kolumny,
> URZADZENIE varchar
> POMIAR float
> CZAS_POMIARU timestamp
>
> Do tej tabeli zapisywane są w nieregularny sposób wyniki pomiarów dla
> poszczególnych urządzeń.
>
> próbuje ułożyć zapytanie które zwróci mi
> średnią (lub sumę) z ostatnich pomiarów dla wybranej listy urządzeń
>
> dla sumy wystarczy pewnie zmienić AVG na SUM
>
> Dla pojedynczego urzadzenia mam tak:
>
> select AVG(POMIAR) from TABELA where URZADZENE='abc' AND
CZAS_POMIARU=(select
> max(CZAS_POMIARU) from TABELA where URZADZENIE='abc')
>
> A jak to zrobić dla podanej listy urządzeń?
> kombinowałem troche z URZADZENE IN ('abc' , 'xyz')
> ale bez spodziewanych rezultatów.
>
> pozdrawiam
> Juan
>
>
>

Jak kombinowałeś, jakie miały być rezultaty i jakie były rezultaty?

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/




Grzegorz Danowski - 13-09-2007 00:04

  "Juan Rodrigez" <juan_rodrigezWYTNIJTO@poczta.onet.pl> wrote in message
news:0747.0000012a.46e6eec3@newsgate.onet.pl...
> Mam tabele w której są m.in. takie kolumny,
> URZADZENIE varchar
> POMIAR float
> CZAS_POMIARU timestamp
>
> Do tej tabeli zapisywane są w nieregularny sposób wyniki pomiarów dla
> poszczególych urządzeń.
>
> próbuje ułożyć zapytanie które zwróci mi
> średnią (lub sumę) z ostatnich pomiarów dla wybranej listy urządzeń

Najpierw znajdź dla każdego urządzenia ostatnie pomiary:
Create View OstatniePomiary
As
Select
Urzadzenie,
Max(CZAS_POMIARU)
From
TABELA
Group By
Urzadzenie
Go

I potem średnie z ostatnich pomiarów:

Select
Urzadzenie,
AVG(POMIAR)
From
TABELA As T
Inner Join
OstatniePomiary As O
On
T.Urzadzenie = O.Urzadzenie
Group By
Urzadzenie

Oczywiście możesz w powyższym dodać warunek Where:
....
On
T.Urzadzenie = O.Urzadzenie
Where
Urzadzenie In ('abc' , 'xyz')
Group By
Urzadzenie

No i jeśli chcesz, to zamiast dodatkowego widoku możesz użyć podzapytania,
np:

Select
Urzadzenie,
AVG(POMIAR)
From
TABELA As T
Inner Join
(Select
Urzadzenie,
Max(CZAS_POMIARU)
From
TABELA
Group By
Urzadzenie) As O
On
T.Urzadzenie = O.Urzadzenie
Where
Urzadzenie In ('abc' , 'xyz')
Group By
Urzadzenie

--
Pozdrawiam
Grzegorz
http://gdanowski.blogspot.com/





miobeb@gmail.com - 13-09-2007 00:04

  On 12 Wrz, 09:53, "Grzegorz Danowski"
<gdn__na@serwerze__poczta.onet.pl> wrote:
> "Juan Rodrigez" <juan_rodrigezWYTNI...@poczta.onet.pl> wrote in message
>
> news:0747.0000012a.46e6eec3@newsgate.onet.pl...
>
> > Mam tabele w której są m.in. takie kolumny,
> > URZADZENIE varchar
> > POMIAR float
> > CZAS_POMIARU timestamp
>
> > Do tej tabeli zapisywane są w nieregularny sposób wyniki pomiarówdla
> > poszczególych urządzeń.
>
> > próbuje ułożyć zapytanie które zwróci mi
> > średnią (lub sumę) z ostatnich pomiarów dla wybranej listy urządzeń
>
> Najpierw znajdź dla każdego urządzenia ostatnie pomiary:
> Create View OstatniePomiary
> As
> Select
> Urzadzenie,
> Max(CZAS_POMIARU)
> From
> TABELA
> Group By
> Urzadzenie
> Go
>
> I potem średnie z ostatnich pomiarów:
>
> Select
> Urzadzenie,
> AVG(POMIAR)
> From
> TABELA As T
> Inner Join
> OstatniePomiary As O
> On
> T.Urzadzenie = O.Urzadzenie
> Group By
> Urzadzenie
>
> Oczywiście możesz w powyższym dodać warunek Where:
> ...
> On
> T.Urzadzenie = O.Urzadzenie
> Where
> Urzadzenie In ('abc' , 'xyz')
> Group By
> Urzadzenie
>
> No i jeśli chcesz, to zamiast dodatkowego widoku możesz użyć podzapytania,
> np:
>
> Select
> Urzadzenie,
> AVG(POMIAR)
> From
> TABELA As T
> Inner Join
> (Select
> Urzadzenie,
> Max(CZAS_POMIARU)
> From
> TABELA
> Group By
> Urzadzenie) As O
> On
> T.Urzadzenie = O.Urzadzenie
> Where
> Urzadzenie In ('abc' , 'xyz')
> Group By
> Urzadzenie
>
> --
> Pozdrawiam
> Grzegorzhttp://gdanowski.blogspot.com/

To zapytanie jest w ogóle złe, bo nie ma warunku na wcześniej
wyliczony max(CZAS_POMIARU). Jeśli dla danego urzazenia z danym
CZASEM_POMIARU jest wpisana tylko jedna wartość pomiaru to należy
zrobić tak:
Select
Urzadzenie,
Pomiar
From
TABELA As T
Inner Join
(Select
Urzadzenie,
Max(CZAS_POMIARU) max_czas
From
TABELA
Group By
Urzadzenie) As O
On
T.Urzadzenie = O.Urzadzenie and T.CZAS_POMIARU = O.max_czas
Where
Urzadzenie In ('abc' , 'xyz')

a jeśli kilka to tak

Select
Urzadzenie,
AVG( Pomiar) Avg_Pomiar
From
TABELA As T
Inner Join
(Select
Urzadzenie,
Max(CZAS_POMIARU) max_czas
From
TABELA
Group By
Urzadzenie) As O
On
T.Urzadzenie = O.Urzadzenie and T.CZAS_POMIARU = O.max_czas
Where
Urzadzenie In ('abc' , 'xyz')
group by
Urzadzenie

Pozdr.,

Michał




Grzegorz Danowski - 13-09-2007 00:04

  <miobeb@gmail.com> wrote in message
news:1189588916.729648.31960@r29g2000hsg.googlegro ups.com...
....
>
> Select
> Urzadzenie,
> AVG(POMIAR)
> From
> TABELA As T
> Inner Join
> (Select
> Urzadzenie,
> Max(CZAS_POMIARU)
> From
> TABELA
> Group By
> Urzadzenie) As O
> On
> T.Urzadzenie = O.Urzadzenie

<cite>
To zapytanie jest w ogóle złe, bo nie ma warunku na wcześniej
wyliczony max(CZAS_POMIARU). Jeśli dla danego urzazenia z danym
CZASEM_POMIARU jest wpisana tylko jedna wartość pomiaru to należy
zrobić tak:
....
Max(CZAS_POMIARU) max_czas
....
On
T.Urzadzenie = O.Urzadzenie and T.CZAS_POMIARU = O.max_czas
....
</cite>

Oczywiście zapomniałem po co wyciągnąłem max czas pomiaru. Dzięki za
sprostowanie.
--
Pozdrawiam
Grzegorz
http://gdanowski.blogspot.com/




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 13-09-2007 00:04

  Juan Rodrigez wrote:
> Witam,
>
> Mam tabele w której są m.in. takie kolumny,
> URZADZENIE varchar
> POMIAR float
> CZAS_POMIARU timestamp
>
> Do tej tabeli zapisywane są w nieregularny sposób wyniki pomiarów dla
> poszczególnych urządzeń.
>
> próbuje ułożyć zapytanie które zwróci mi
> średnią (lub sumę) z ostatnich pomiarów dla wybranej listy urządzeń
>
> dla sumy wystarczy pewnie zmienić AVG na SUM
>
> Dla pojedynczego urzadzenia mam tak:
>
> select AVG(POMIAR) from TABELA where URZADZENE='abc' AND CZAS_POMIARU=(select
> max(CZAS_POMIARU) from TABELA where URZADZENIE='abc')
>
> A jak to zrobić dla podanej listy urządzeń?
> kombinowałem troche z URZADZENE IN ('abc' , 'xyz')
> ale bez spodziewanych rezultatów.

A o jaką bazę chodzi?

--
P.M.




Juan Rodrigez - 13-09-2007 00:04

 
Dzięki za odpowiedzi
- to było tego czego potrzebowałem

J.

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl




Juan Rodrigez - 13-09-2007 00:04

 
> A o jaką bazę chodzi?
>

MySQL 5

Juan

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?= =?ISO-8859-2?Q?Narz=EAdzie_do_budowania_zapyta=F1_SQL=2C?==?I SO-8859-2?Q?_PL/PgSQL=2C_PL/SQL=2C_T-SQL?= [ms sql] =?ISO-8859-2?Q?wy=B6wietlenie_pierwszych_5_rekord?==?ISO-8859-2?Q?=F3w_z_zapytania_=3F_odpowiednik_ROWNUM_w_o?== ?ISO-8859-2?Q?raclu_dla_MS_SQL=27a?= phpMyAdmin zadaje =?ISO-8859-2?Q?z=B3e_zapytania=2E=2E=2E_Dl?==?ISO-8859-2?Q?aczego=3F?= [MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?= [mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?= [oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?= [mysql/php] jak =?ISO-8859-2?Q?zliczy=E6_ilo=B6=E6_unikalnyc?==?ISO-8859-2?Q?h_rekord=F3w_w_jednym_zapytaniu=3F?= [MySQL] Zapytanie z =?ISO-8859-2?Q?dw=F3ch_tabel_na_raz_?==?ISO-8859-2?Q?i_grupowanie_po_wsp=F3lnym_polu=2E_Jak_=3F?= mecze sie i mecze i nic - zapytanie czesciowe
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • czterowers.keep.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com