Zapytanie o te rekordy, ktore maja minimalna ceche
Krzysiek - 16-01-2007 00:01
Zapytanie o te rekordy, ktore maja minimalna ceche
Witam,
mam prośbę o pomoc, jak zrobić zapytanie, które z takiego widoczku wybierze mi tylko te towary, które zostały sprzedane w cenie minimalnej. Oczywiście chciałbym móc później agregować te dane i zbadać wartość.
FAKTURA | TOWAR | CENA id_faktury1 | towar1 | 5,00 id_faktury2 | towar2 | 2,99 id_faktury3 | towar3 | 4,99 id_faktury4 | towar3 | 6,80 id_faktury5 | towar1 | 5,10 id_faktury6 | towar2 | 2,99 id_faktury7 | towar2 | 3,99
Wynik: id_faktury1 | towar1 | 5,00 id_faktury2 | towar2 | 2,99 id_faktury6 | towar2 | 2,99 id_faktury3 | towar3 | 4,99
Oczywiście kolumn jest więcej. Tu daję tylko kolumny najbardziej istotne.
pozdrawiam Krzysiek
Matt Z - 16-01-2007 00:03
Krzysiek napisał(a): > Witam, > > mam proďż˝bę o pomoc, jak zrobić zapytanie, które z takiego widoczku wybierze > mi tylko te towary, które zostały sprzedane w cenie minimalnej.
Jaki DBMS?
Select * from TABLE t1 where t1.CENA = (SELECT min(CENA) FROM TABLE WHERE t1.TOWAR = TOWAR)
> Oczywiďż˝cie > chciałbym móc póďż˝niej agregować te dane i zbadać wartoďż˝ć.
a tego to już nie rozumiem
-- Matt Z
Krzysiek - 16-01-2007 00:47
Użytkownik "Matt Z" <matt@z.pl.usun.koncowke> napisał w wiadomości news:eoh4le$rtu$1@news.onet.pl... Krzysiek napisał(a):
> Select * from TABLE t1 where t1.CENA = (SELECT min(CENA) FROM TABLE WHERE > t1.TOWAR = TOWAR)
Dzięki za selecta z selecta, jest on oczywisty ale bardzo dużo kosztuje. Nie wiem czemu, bo wewnętrzne zapytanie zwraca tylko minimum (tablica towarów i ich minimalnych cen). No żeby tak było to wewnątrz trzeba by... SELECT TOWAR, min(CENA) FROM TABLE WHERE t1.TOWAR = TOWAR
>Jaki DBMS?
ORACLE 9
>> chciałbym móc później agregować te dane i zbadać wartość. >a tego to już nie rozumiem Tzn. to co pozostanie np zsumować i powiedzieć, że taka część obrotu poszła po cenie minimalnej
Krzysiek
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 17-01-2007 00:05
Krzysiek wrote: > Użytkownik "Matt Z" <matt@z.pl.usun.koncowke> napisał w wiadomości > news:eoh4le$rtu$1@news.onet.pl... > Krzysiek napisał(a): > >> Select * from TABLE t1 where t1.CENA = (SELECT min(CENA) FROM TABLE WHERE >> t1.TOWAR = TOWAR) > > Dzięki za selecta z selecta, jest on oczywisty ale bardzo dużo kosztuje. > Nie wiem czemu, bo wewnętrzne zapytanie zwraca tylko minimum (tablica > towarów i ich minimalnych cen). > No żeby tak było to wewnątrz trzeba by... > SELECT TOWAR, min(CENA) FROM TABLE WHERE t1.TOWAR = TOWAR > >> Jaki DBMS? > > ORACLE 9 > >>> chciałbym móc później agregować te dane i zbadać wartość. >> a tego to już nie rozumiem > Tzn. to co pozostanie np zsumować i powiedzieć, że taka część obrotu poszła > po cenie minimalnej
SELECT sum(m.cena*ilosc) / sum(t.cena*ilosc) FROM t LEFT JOIN (SELECT id,min(cena) as cena FROM t GROUP BY id) m ON (t.id = m.id and t.cena = m.cena)
Coś takiego?
-- P.M.
patryk.manterys@gmail.com - 18-01-2007 00:01
Krzysiek napisał(a): > Witam, > > mam prośbę o pomoc, jak zrobić zapytanie, które z takiego widoczku wybierze > mi tylko te towary, które zostały sprzedane w cenie minimalnej. Oczywiście > chciałbym móc później agregować te dane i zbadać wartość. > > FAKTURA | TOWAR | CENA > id_faktury1 | towar1 | 5,00
A nie lepiej tak?
SELECT TOWAR, SUM(CENA) AS "Kwota w sumie", MIN(CENA) AS "Minimalna cena", COUNT(TOWAR) AS "Ilosc sprzedanych towarow" FROM TABELA GROUP BY TOWAR
Pozdrawiam, Patryk Manterys
Szymon Adamala - 18-01-2007 00:01
> Dzięki za selecta z selecta, jest on oczywisty ale bardzo dużo kosztuje.
> >Jaki DBMS? > ORACLE 9
Skoro zależy Ci na koszcie i używasz Oracla, to:
SELECT faktura, towar, cena FROM ( SELECT faktura, towar, cena, rank() OVER(PARTITION BY towar ORDER BY cena ASC) ranking FROM TEST ) WHERE ranking = 1;
(testowałem po 10g, ale w 9 też powinno działać)
Pozdrawiam, Szymon
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Krzysiek - 18-01-2007 00:01
Użytkownik <patryk.manterys@gmail.com> napisał w wiadomości
SELECT TOWAR, SUM(CENA) AS "Kwota w sumie", MIN(CENA) AS "Minimalna cena", COUNT(TOWAR) AS "Ilosc sprzedanych towarow" FROM TABELA GROUP BY TOWAR
Dzięki za propozycję. Tojednak za mało informacji, bo zanim zsumuję to chciałbym mieć wyliczone te faktury, na których był ten towar (dokładniej na pozycjach faktur). Chce to ubrać w raport i wypuścić do userów. Grupowanie jest w drugiej kolejności. Najpierw muszę mieć wyliczenie. pozdrawiam Krzysiek
Krzysiek - 18-01-2007 00:01
Użytkownik "Paweł Matejski" <madej@spam.madej.pl.eu.org> napisał w wiadomości news:eoidgu$sm0$1@inews.gazeta.pl...
> SELECT sum(m.cena*ilosc) / sum(t.cena*ilosc) > FROM t > LEFT JOIN > (SELECT id,min(cena) as cena FROM t GROUP BY id) m > ON (t.id = m.id and t.cena = m.cena) > > Coś takiego?
Nie działa mi to. Jesteś pewien tego wikłania aliasów? Przyznam, że LEFT JOIN nie jest jescze przeze mnie przećwiczone.
Doczytam i powalczę. Dam znać jak zadziała.
pozdrawiam Krzysiek
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 18-01-2007 00:38
Krzysiek wrote: > Użytkownik "Paweł Matejski" <madej@spam.madej.pl.eu.org> napisał w > wiadomości news:eoidgu$sm0$1@inews.gazeta.pl... > >> SELECT sum(m.cena*ilosc) / sum(t.cena*ilosc) >> FROM t >> LEFT JOIN >> (SELECT id,min(cena) as cena FROM t GROUP BY id) m >> ON (t.id = m.id and t.cena = m.cena) >> >> Coś takiego? > > > Nie działa mi to.
Mnie też. Tylko ja po prostu tego nie odpalałem, a Ty? ;)
> Jesteś pewien tego wikłania aliasów?
Raptem jeden alias!
> Przyznam, że LEFT JOIN nie jest jescze przeze mnie przećwiczone. > > Doczytam i powalczę. Dam znać jak zadziała.
Polecam standardowy sposób debugowania zapytań agregujących - wyrzucić funkcję agregujące: SELECT ilosc,t.id,t.cena,m.cena .....
-- P.M.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
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?=
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] 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
[sql][pgsql] zapytanie sql
zapytanie do =?ISO-8859-2?Q?dw=F3ch_tabel_z_limitem_wier?==?ISO-8859-2?Q?szy?=
zanotowane.pldoc.pisz.plpdf.pisz.pladwokat.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 |
|