[Oracle] - zapytanie SQL
jerry - 11-05-2007 12:32
[Oracle] - zapytanie SQL
Witam, Chciałbym uniknać pisania funkcji przy następującym problemie:
Struktura tabeli:
A data ---------------------- 2 22.02.2007 6 03.02.2007 3 03.12.2007 1 22.02.2006 12 22.02.2005 [....]
Dla każdego wiersza muszę otrzymać taki zestaw danych:
[data][średnia wartość kolumny A dla wybranego dnia i miesiąca ale dla wszystkich lat]
Czyli dla wiersza: 2 22.02.2007
otrzymam:
[22.02.2007][5] - średnia wart kolumny A z dat: 22.02.2007, 22.02.2006, 22.02.2005
Czy da się otrzymać to jednym zapytaniem? Jeśli tak, poprosze o podpowiedzi.
=?ISO-8859-2?Q?Adam_P=B3aszczyca?= - 11-05-2007 12:32
On Mon, 23 Apr 2007 15:02:20 +0200, jerry <jerry@niewazne.pl> wrote:
> > A data >---------------------- > 2 22.02.2007 > 6 03.02.2007 > 3 03.12.2007 > 1 22.02.2006 > 12 22.02.2005 >[....] > >Dla każdego wiersza muszę otrzymać taki zestaw danych: > >[data][średnia wartość kolumny A dla wybranego dnia i miesiąca ale dla >wszystkich lat] > >Czyli dla wiersza: >2 22.02.2007 > >otrzymam: > >[22.02.2007][5] - średnia wart kolumny A z dat: 22.02.2007, 22.02.2006, >22.02.2005
Czekaj, a która data dla danego A ma być wzięta? Największa? > >Czy da się otrzymać to jednym zapytaniem? Jeśli tak, poprosze o podpowiedzi.
Dać się powinno. Tak zupełnie na piechotę, to możesz użyć podzapytania, które da wynik taki:
A Data string_z_daty_bez_roku 2 22.02.2007 22.02 6 03.02.2007 03.02 3 03.12.2007 03.12 1 22.02.2006 22.02 12 22.02.2005 22.02
I z tego już select prostacko:
select avg(A), max(data) from tabela group by string_z_daty_bez_roku
-- ___________ (R) /_ _______ Adam 'Trzypion' Płaszczyca (+48 502) 122688 ___/ /_ ___ ul. Na Szaniec 23/70, 31-560 Kraków, (012) 3783198 _______/ /_ http://trzypion.oldfield.org.pl/wieliczka/ ___________/ GG: 3524356
=?ISO-8859-2?Q?Micha=B3?= Kuratczyk - 11-05-2007 12:32
jerry wrote: > A data > ---------------------- > 2 22.02.2007 > 6 03.02.2007 > 3 03.12.2007 > 1 22.02.2006 > 12 22.02.2005 > [....] > > Dla każdego wiersza muszę otrzymać taki zestaw danych: > > [data][średnia wartość kolumny A dla wybranego dnia i miesiąca ale dla > wszystkich lat]
select to_char(data, 'DD-MM'), avg(a) from T group by to_char(data, 'DD-MM')
-- Michał Kuratczyk
Robert Niestroj - 11-05-2007 12:32
It was the 2007-04-23 15:02, when jerry wrote :
Podepnę się pod wątek :) Mam dwie tabele bilet i klient. Chciałbym sprawdzić ile dany klient ma biletów.
Poniższe zapytanie zwraca mi id_klienta oraz ilość wystąpień id_klienta w tabeli bilet czyli ok. select id_klienta, count (id_klienta) "ilosc" from bilet group by id_klienta;
Teraz bym chciał z tabeli klient do tego przypisać imie_klienta i nazwisko_klienta. Próbuję tak:
select b.id_klienta, count (b.id_klienta) "ilosc", k.imie_klienta, k.nazwisko_klienta from bilet b, klient k where (b.id_klienta=k.id_klienta) group by b.id_klienta ;
Zwraca mi to: Not a GROUP BY expression. Proszę o pomoc :-)
-- [ : Robert Niestroj ::::::: member of rally.pl te@m OPOLE :::::::::::: ] [ : [JID: rniestroj@jabberpl.org] : [GG: 1734202] : [ICQ: 162506105] : ] [ : ::::: [ http://firefox.pl ] :::::: [ http://rallyonline.pl ] ::::: ] [ : "W porównaniu z nami Formuła 1 to przedszkole", Colin McRae 2001 : ]
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 11-05-2007 12:32
Robert Niestroj wrote: > It was the 2007-04-23 15:02, when jerry wrote : > > Podepnę się pod wątek :) > Mam dwie tabele bilet i klient. Chciałbym sprawdzić ile dany klient ma > biletów. > > Poniższe zapytanie zwraca mi id_klienta oraz ilość wystąpień id_klienta > w tabeli bilet czyli ok. > select id_klienta, count (id_klienta) "ilosc" from bilet group by > id_klienta; > > Teraz bym chciał z tabeli klient do tego przypisać imie_klienta i > nazwisko_klienta. Próbuję tak: > > select b.id_klienta, count (b.id_klienta) "ilosc", k.imie_klienta, > k.nazwisko_klienta from bilet b, klient k where > (b.id_klienta=k.id_klienta) group by b.id_klienta ; > > Zwraca mi to: Not a GROUP BY expression. Proszę o pomoc :-)
Podstawy. Dodaj imie i nazwisko do group by.
-- P.M.
=?ISO-8859-2?Q?Adam_P=B3aszczyca?= - 11-05-2007 12:32
On Mon, 23 Apr 2007 22:29:36 +0200, Paweł Matejski <madej@spam.madej.pl.eu.org> wrote:
>> Zwraca mi to: Not a GROUP BY expression. Proszę o pomoc :-) > >Podstawy. Dodaj imie i nazwisko do group by.
Albo najpierw zrób podzapytanie dające klient ID i ilośc wystąpień, a potem złącz do nazwiska i imienia. -- ___________ (R) /_ _______ Adam 'Trzypion' Płaszczyca (+48 502) 122688 ___/ /_ ___ ul. Na Szaniec 23/70, 31-560 Kraków, (012) 3783198 _______/ /_ http://trzypion.oldfield.org.pl/wieliczka/ ___________/ GG: 3524356
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Oracle 19g +Insert +Insert +Insert...
[Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?=
=?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?=
jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?=
[oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?=
[oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?=
MSSQL Express czy Oracle Express
=?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?=
=?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?=
=?iso-8859-2?q?[oracle_10g]_jak_da=E6_grant_do_gv$=2E=2E=2E=2E_=3F?=
zanotowane.pldoc.pisz.plpdf.pisz.plbajkomoda.xlx.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 |
|