ďťż
 
Jak wyciągnąć takie dane... ďťż
 
Jak wyciągnąć takie dane...
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

Jak wyciągnąć takie dane...



Zibi - 27-05-2006 00:39
Jak wyciągnąć takie dane...
  Witam,
czy ktoś z bardziej doświadczonych w SQLu ode mnie może mi pomóc w
skonstruowaniu poprawnego zapytania?

Tabela nazwa_tabeli zawiera kolumny:
numer_dzial, numer_wskaznik, wartosc_wskaznik, data_rok, data_mc, data_dzien

Są tam zapisywane każdego dnia rekordy dla każdego wskaźnika dla każdego
działu (każdy dział składa codziennie raport z np. 5 wskaźników).

Chciałbym teraz odczytać zsumowane wartości poszczególnych wskaźników w
określonym przedziale czasowym (oczywiście wskaźniki zsumowane w ramach
danego działu). Wiem, że trzeba tu skorzystać z funkcji agregacji ale nie za
bardzo mi to wychodzi.

Dzięki za pomoc





Parasit Hendersson - 27-05-2006 00:39

  Dnia Fri, 26 May 2006 12:22:45 +0200, Zibi napisał(a):

> Tabela nazwa_tabeli zawiera kolumny:
> numer_dzial, numer_wskaznik, wartosc_wskaznik, data_rok, data_mc, data_dzien

> Chciałbym teraz odczytać zsumowane wartości poszczególnych wskaźników w
> określonym przedziale czasowym (oczywiście wskaźniki zsumowane w ramach
> danego działu). Wiem, że trzeba tu skorzystać z funkcji agregacji ale
> nie za bardzo mi to wychodzi.

Chyba nie rozumiem istoty problemu, nie działa po prostu:
select sum(wartosc_wskaznik) from nazwa_tabeli where
numer_wskaznik = costam and
data_rok = 2006 and
data_mc = 5 and .... itp itd.




Zibi - 27-05-2006 00:39

  [...]

> Chyba nie rozumiem istoty problemu, nie działa po prostu:
> select sum(wartosc_wskaznik) from nazwa_tabeli where
> numer_wskaznik = costam and
> data_rok = 2006 and
> data_mc = 5 and .... itp itd.

OK. Inaczej. Tak jak powyżej działa ale musze 'ręcznie' wskazać jaki dział i
jaki wskaźnik. Ja chcę aby zapytanie zwróciło mi pogrupowane zestawienie (wg
działu i wskaznika) dla wszystkich działów.
Co chcę otrzymać, np.:

przykładowy zapis w tabeli:
id_dzial id_wskaznik data_rok data_mc data_dz wartosc
001 1 2006 05 20 10
001 2 2006 05 20 20
001 3 2006 05 20 30
001 1 2006 05 21 1
001 2 2006 05 21 2
001 3 2006 05 21 3
001 1 2006 05 22 5
001 2 2006 05 22 6
001 3 2006 05 22 7

002 1 2006 05 20 100
002 2 2006 05 20 200
002 3 2006 05 20 300

oczekuję:
id_dzial id_wskaznik data_rok data_mc wartosc
001 1 2006 05 16 <--
(10+1+5)
001 2 2006 05 28 <--
(20+2+6)
001 3 2006 05 40 ...

002 1 2006 05 100
002 2 2006 05 200
002 3 2006 05 300




Mariusz Pasieczny - 27-05-2006 00:39
=?ISO-8859-2?Q?Re:_Jak_wyci=B1gn=B1=E6_takie_dane...?=
  Zibi <TNIJSPAMzbigniew.rutkowski@wp.pl> napisał(a):

> [...]
>
> > Chyba nie rozumiem istoty problemu, nie działa po prostu:
> > select sum(wartosc_wskaznik) from nazwa_tabeli where
> > numer_wskaznik = costam and
> > data_rok = 2006 and
> > data_mc = 5 and .... itp itd.
>
> OK. Inaczej. Tak jak powyżej działa ale musze 'ręcznie' wskazać jaki dział i
> jaki wskaźnik. Ja chcę aby zapytanie zwróciło mi pogrupowane zestawienie (wg
> działu i wskaznika) dla wszystkich działów.
> Co chcę otrzymać, np.:
>
> przykładowy zapis w tabeli:
> id_dzial id_wskaznik data_rok data_mc data_dz wartosc
> 001 1 2006 05 20 10
> 001 2 2006 05 20 20
> 001 3 2006 05 20 30
> 001 1 2006 05 21 1
> 001 2 2006 05 21 2
> 001 3 2006 05 21 3
> 001 1 2006 05 22 5
> 001 2 2006 05 22 6
> 001 3 2006 05 22 7
>
> 002 1 2006 05 20 100
> 002 2 2006 05 20 200
> 002 3 2006 05 20 300
>
>
> oczekuję:
> id_dzial id_wskaznik data_rok data_mc wartosc
> 001 1 2006 05 16 <--
> (10+1+5)
> 001 2 2006 05 28 <--
> (20+2+6)
> 001 3 2006 05 40 ...
>
> 002 1 2006 05 100
> 002 2 2006 05 200
> 002 3 2006 05 300
>
>

SELECT *, SUM(wartosc) FROM tabela WHERE data_rok="2006" GROUP BY id_dzial,
id_wskaznik

?

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





Zibi - 27-05-2006 00:39

  [...]
> SELECT *, SUM(wartosc) FROM tabela WHERE data_rok="2006" GROUP BY
> id_dzial,
> id_wskaznik

Dzięki, zadziałało, zrobiłem coś takiego:

SELECT id_dzial, id_wskaznik, SUM(wartosc)
FROM nazwa_tabeli
GROUP BY id_dzial, id_wskaznik

A teraz jak zrobić warunek abym mógł określać przedział czasowy dla
sumowania wartosci? Domyślam, się, że muszę zastosować HAVING? Czyli coś w
rodzaju: HAVING data_rok = '2006' and data_mc = '05' and okres_dz < '27'?
Ale to nie działa i woła, że kolumny wymienione w HAVING muszą odnosić się
do wartości zagregowanych.

Dzięki za dotychczasowe wskazówki.
Zibi




Mariusz Pasieczny - 27-05-2006 00:39
=?ISO-8859-2?Q?Re:_Jak_wyci=B1gn=B1=E6_takie_dane...?=
  Zibi <TNIJSPAMzbigniew.rutkowski@wp.pl> napisał(a):

> [...]
> > SELECT *, SUM(wartosc) FROM tabela WHERE data_rok="2006" GROUP BY
> > id_dzial,
> > id_wskaznik
>
> Dzięki, zadziałało, zrobiłem coś takiego:
>
> SELECT id_dzial, id_wskaznik, SUM(wartosc)
> FROM nazwa_tabeli
> GROUP BY id_dzial, id_wskaznik
>
> A teraz jak zrobić warunek abym mógł określać przedział czasowy dla
> sumowania wartosci? Domyślam, się, że muszę zastosować HAVING? Czyli coś w
> rodzaju: HAVING data_rok = '2006' and data_mc = '05' and okres_dz < '27'?
> Ale to nie działa i woła, że kolumny wymienione w HAVING muszą odnosić się
> do wartości zagregowanych.
>

SELECT id_dzial, id_wskaznik, SUM(wartosc) FROM nazwa_tabeli WHERE
data_rok>"2005" AND data_rok<"2006" GROUP BY id_dzial, id_wskaznik

?

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




Zibi - 27-05-2006 00:39

  [...]
> SELECT id_dzial, id_wskaznik, SUM(wartosc) FROM nazwa_tabeli WHERE
> data_rok>"2005" AND data_rok<"2006" GROUP BY id_dzial, id_wskaznik

Dziękuję! Jest OK.

Pozdrawiam,
Zibi
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [MySQL] Czy da =?ISO-8859-2?Q?si=EA_wykonac_takie_powi=B1z?==?ISO-8859-2?Q?anie_mi=EAdzy_tabelami=2C_i_jak_to_odpyta=E6_? ==?ISO-8859-2?Q?=3F?= =?iso-8859-2?q?Sybase_jak_wyci=B1gn=B1=E6_dane_generowane_prz ez_funkcje?= =?iso-8859-2?q?[ms_sql]_Sprawdzenie_kto_usun=B1=B3_dane_w_tabeli_=3F?= Jak wyswietlic dane z dwoch tabel gdy dla jednej z nich jest brak jest danej wartosci czemu dane www znikaja z darmowego serwera xhost po okolo 2 tyg? =?iso-8859-2?Q?jak_zamieni=E6_dane_w_bazie_MS_access?= dane, struktura drzewiasta, =?ISO-8859-2?Q?=B3adna_prezentacja?= =?iso-8859-2?q?Dane_o_nieruchomo=B6ciach_w_okolicy_Warszawy?= [mssql] Dane pośrednie, jak wyjąć/wykorzystać ponownie? jak to zrobić? [mySQL] jak wprowadzić dane i max rekord z innej tabeli?
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • shanti.opx.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