Autor Zpráva
tomyx007
Profil
Dobry den, uz si moc nevim rady. Mam tabulku "vyrobek" s atributy a hodnotami:

id_vyrobku | sleva | skupina
92131 | 20 | 4193
92131 | 20 | 3478
92131 | 20 | 3478
92334 | 22 | 4193
92334 | 22 | 4195

Potreboval bych udelat SQL dotaz (nejlepe pro PostgreSQL 8.4), ktery by mi vratil ruzne vyrobky z ruznych skupin a seradil je podle slevy. Ale id_vyrobku se nesmi ve vysledku opakovat a stejne tak se nesmi opakovat skupina ve vysledku. V tomto prikladu by vratil 2 zaznamy:
id_vyrobku | sleva | skupina
92131 | 20 | 4193
92334 | 22 | 4195
mattyZEM
Profil
GROUP BY id_vyrobku
tomyx007
Profil
mattyZEM:
GROUP BY id_vyrobku
Tím ničeho nedosáhnu, protože do GROUP BY se dávají všechny atributy v dotazuů tj.
SELECT id_vyrobku, sleva,skupiny
FROM obch_nakup_dne
GROUP BY id_vyrobku, sleva, skupiny
ORDER BY sleva DESC

A tím pádem mě do výsledku přijde duplicita id_vyrobku:
id_vyrobku | sleva | skupina
92131 | 20 | 4193
92131 | 20 | 3478
92334 | 22 | 4193
92334 | 22 | 4195
Kajman_
Profil *
Tím ničeho nedosáhnu, protože do GROUP BY se dávají všechny atributy v dotazuů
Kdepak, jen se ale musíte rozhodnout, co chcete z těch více hodnot u jiných sloupců a použít na to agregační funkci.

SELECT id_vyrobku, avg(sleva) sleva, max(skupiny)
FROM obch_nakup_dne
GROUP BY id_vyrobku
ORDER BY sleva
__construct
Profil
SELECT DISTINCT ...
Kajman_
Profil *
__construct:
To vypíše také 4 řádky, on chce 2.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0