Portál AbcLinuxu, 10. května 2025 12:41

Dotaz: postgres a maximum z několika sloupečků

10.3.2006 21:04 Jáchym Čepický | skóre: 29 | blog: U_Jachyma
postgres a maximum z několika sloupečků
Přečteno: 84×
Odpovědět | Admin
zdravím,

potřeboval bych dostat pro každý záznam jméno sloupce, který má maximální hodnotu z několika dalších: tedy pro každý zázam *lesního porostu* získat jméno *dřeviny*, která se v danném porostu vyskytuje nejčastěji:
id_porostu | sm | bk | jd | max
-----------+----+----+----+-----
     1     | 100| 0  | 0  | sm
     2     | 30 | 50 | 20 | bk
     3     | 90 | 5  | 5  | sm
     4     | 30 | 30 | 40 | jd
...
nevíte prosím někdo, jak na to, ať už pomocí sql a nebo skriptem?

dík

jáchym
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

10.3.2006 22:24 Jáchym Čepický | skóre: 29 | blog: U_Jachyma
Rozbalit Rozbalit vše Re: postgres a maximum z několika sloupečků
Odpovědět | | Sbalit | Link | Blokovat | Admin
jde to , ale dře to:
import os, string, sys

for line in os.popen("""psql -tA -F " " -d databaze -c "select id_porostu,sm,bo,jd,md,dg,bk,db,js,jv,lp FROM det" """):
    if len(line.split()) == 11:
        #[id,sm,bo,jd,md,dg,bk,db,js,jv,lp] = line.split()
        line=line.split()
        dreviny=[]
        for strom in line:
            dreviny.append(string.atoi(strom))
            
        maximum=max(dreviny[1:])
        result = {
             dreviny[1]: 'spruce',
             dreviny[2]: 'pine',
             dreviny[3]: 'fir',
             dreviny[4]: 'larch',
             dreviny[5]: 'douglas',
             dreviny[6]: 'beach',
             dreviny[7]: 'oak',
             dreviny[8]: 'beach',
             dreviny[9]: 'maple',
             dreviny[10]: 'oak'
        }[maximum]
        #sys.stdout=sys.stderr
        print """update det set baumart='%s' where id_porostu=%d;\n""" % (result, dreviny[0])
10.3.2006 22:27 secido | skóre: 27
Rozbalit Rozbalit vše Re: postgres a maximum z několika sloupečků
Pekne, ale co tak trochu sa zamysliet nad navrhom tabulky?
11.3.2006 01:24 Pmx
Rozbalit Rozbalit vše Re: postgres a maximum z několika sloupečků
Co když budou mít dva sloupce stejný (a nejvyšší) obsah? Jinak ten skript mi přijde docela fuj, snad by to šlo vyřešit přes SQL v nějakém pohledu (view), tzn. přímo do tabulky to vůbec netahat.
11.3.2006 10:19 barney
Rozbalit Rozbalit vše Re: postgres a maximum z několika sloupečků
view? ee

ale slo by to snad cez pl/pgsql

11.3.2006 10:41 Jáchym Čepický | skóre: 29 | blog: U_Jachyma
Rozbalit Rozbalit vše Re: postgres a maximum z několika sloupečků
Pánové. Díky za vaše rady skutečně nad zlato. Neptal jsem se "čím", ale ptal jsem se "jak". Kdybyste alespoň zveřejnili "hezčí" verzi skriptu (v pythonu začínám).

Add návrh tabulky .. možná je špatný, ale nic lepšího mě nanapadá. Ostatně nejsem autor, dělám s tím, co jsem dostal.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.