abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 11:33 | Nová verze

    Byla vydána nová verze 6.4 linuxové distribuce Parrot OS (Wikipedie). Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    dnes 11:22 | Pozvánky

    Společnost initMAX pořádá sérii bezplatných webinářů věnovaných novému Zabbixu 7.4. Podrobnosti a registrace na webu initMAX.

    … více »
    Heřmi | Komentářů: 0
    dnes 03:44 | Nová verze

    Byla vydána verze 7.0 open source platformy pro správu vlastního cloudu OpenNebula (Wikipedie). Kódový název nové verze je Phoenix. Přehled novinek v poznámkách k vydání v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    dnes 00:11 | Nová verze

    E-mailový klient Thunderbird byl vydán ve verzi 140.0 ESR „Eclipse“. Jde o vydání s dlouhodobou podporou, shrnující novinky v upozorněních, vzhledu, správě složek a správě účtů. Pozor, nezaměňovat s průběžným vydáním 140.0, které bylo dostupné o týden dříve.

    Fluttershy, yay! | Komentářů: 7
    včera 15:11 | IT novinky

    Organizace Video Games Europe reprezentující vydavatele počítačových her publikovala prohlášení k občanské iniciativě Stop Destroying Videogames.

    Ladislav Hagara | Komentářů: 0
    včera 13:22 | IT novinky

    Společnost Raspberry Pi nově nabzí Raspberry Pi Camera Module 3 Sensor Assembly, tj. samostatné senzorové moduly z Raspberry Pi Camera Module 3.

    Ladislav Hagara | Komentářů: 0
    včera 13:00 | Nasazení Linuxu

    Cathode Ray Dude v novém videu ukazuje autorádio Empeg Car (později Rio Car) z let 1999–2001. Šlo o jeden z prvních přehrávačů MP3 do auta. Běží na něm Linux. Vyrobeno bylo jen asi pět tisíc kusů, ale zůstala kolem nich živá komunita, viz např. web riocar.org.

    Fluttershy, yay! | Komentářů: 1
    včera 02:11 | Nová verze

    Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána v nové verzi 2025.7.

    Ladislav Hagara | Komentářů: 0
    včera 01:44 | Nová verze

    Wayland byl vydán ve verzi 1.24.0. Jde o menší vydání po více než roce. Více funkcionality bývá přidáváno v průběžných vydáních Wayland Protocols.

    Fluttershy, yay! | Komentářů: 0
    6.7. 23:44 | Nová verze

    Textový editor Geany byl vydán ve verzi 2.1. Jde o udržovací vydání po bezmála dvou letech. Obsahuje drobná vylepšení vyhledávání, aktualizace podpory zvýrazňování syntaxe a dále převážně opravy chyb.

    Fluttershy, yay! | Komentářů: 1
    Jaký je váš oblíbený skriptovací jazyk?
     (60%)
     (27%)
     (7%)
     (2%)
     (1%)
     (1%)
     (3%)
    Celkem 370 hlasů
     Komentářů: 16, poslední 8.6. 21:05
    Rozcestník

    Dotaz: Postgres: filtrovani na zaklade vztahu mezi jednotlivymi radky

    8.4.2015 19:07 Jiri Tomasek
    Postgres: filtrovani na zaklade vztahu mezi jednotlivymi radky
    Přečteno: 690×
    Ahoj,

    predstavme si, ze mame tuto sql tabulku:
    
    identifikator skore
    a 13
    a 12
    a 15
    a 14
    b 3
    b 5
    b 7
    
    chci ji transformovat na tabulku, kde budou ponechany max 3 radky pro kazdy identifikator, ktere maji nejvetsi skore. Tedy aby "a 12" bylo vyfiltrovano. Jde to nejak jednoduse?

    (BTW Proc to chci: potrebuji totiz prumer 3 nejvetsich skore pro kazdy identifikator. Ano, to by asi slo primo pres nejakou agregacni funkci, ale ta defaultne nejspis neexistuje. Proto zkousim tabulku nejdrive vyfiltrovat a pak je to snadne.)

    Řešení dotazu:


    Odpovědi

    Řešení 1× (karl82)
    okbob avatar 8.4.2015 19:51 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
    Rozbalit Rozbalit vše Re: Postgres: filtrovani na zaklade vztahu mezi jednotlivymi radky
    Technik jak tento problém vyřešit je několik, jeden z nejjednodušších je použití window funkce:
    postgres=> select * from t;
     x | y  
    ---+----
     a | 13
     a | 12
     a | 15
     a | 14
     b |  3
     b |  5
     b |  7
    (7 rows)
    
    postgres=> select x,y from (select rank() over(partition by x order by y desc), x, y from t) s where rank <= 3;
     x | y  
    ---+----
     a | 15
     a | 14
     a | 13
     b |  7
     b |  5
     b |  3
    (6 rows)
    
    Je to dobrá úloha na naučení se trochu netriviálního SQL (naučit se všechny varianty).
    okbob avatar 8.4.2015 19:53 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
    Rozbalit Rozbalit vše Re: Postgres: filtrovani na zaklade vztahu mezi jednotlivymi radky
    Jinak přes agregační funkce by to vyřešit nešlo - ty agregují nikoliv filtrují.
    9.4.2015 11:43 Jiri Tomasek
    Rozbalit Rozbalit vše Re: Postgres: filtrovani na zaklade vztahu mezi jednotlivymi radky
    Uzasny! Diky za rozsireni obzoru.

    Agregacni funkce - myslel jsem napsat si vlastni, neco jako
    
    SELECT id, PRUMER_NEJVSSICH_TRI(skore) GROUP BY id;
    
    okbob avatar 9.4.2015 12:20 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
    Rozbalit Rozbalit vše Re: Postgres: filtrovani na zaklade vztahu mezi jednotlivymi radky
    agregacni funkce vraci skalarni (jednu) hodnotu - takze to z principu nejde. Ale mozna je to o terminologii - mozna jste mel na mysli window funkce :)
    9.4.2015 13:01 Jiri Tomasek
    Rozbalit Rozbalit vše Re: Postgres: filtrovani na zaklade vztahu mezi jednotlivymi radky
    Jasne, vsak PRUMER_NEJVYSSICH_TRI() prece je skalarni hodnota :-)

    Jen jsme si asi nerozumeli, ta agregacni funkce by vyresila trochu jiny problem nez filtrovani - viz text za BTW v puvodni otazce.
    okbob avatar 9.4.2015 17:59 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
    Rozbalit Rozbalit vše Re: Postgres: filtrovani na zaklade vztahu mezi jednotlivymi radky
    Aha, to jsem si neprecetl pozorne otazku. Pak by to slo.
    17.4.2015 14:17 rich
    Rozbalit Rozbalit vše Re: Postgres: filtrovani na zaklade vztahu mezi jednotlivymi radky
    agregaci muzes pouzit primo v dotazu... netreba vytaret dalsi funkce
    4.5.2015 18:51 Chobotnice
    Rozbalit Rozbalit vše Re: Postgres: filtrovani na zaklade vztahu mezi jednotlivymi radky
    Pokud se to skore ma opakovat, chces asi spis dense rank nez rank.
    Josef Kufner avatar 20.4.2015 15:49 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Postgres: filtrovani na zaklade vztahu mezi jednotlivymi radky
    Dá se to naprasit pomocí několika subselectů:
    SELECT t1.id, (
      SELECT AVG(t2.skore)
      FROM (
        SELECT t3.skore
        FROM t AS t3
        WHERE t3.id = t1.id
        ORDER BY t3.skore DESC
        LIMIT 3
      ) AS t2
    ) AS prumer_3_nejvyssich
    FROM t as t1
    GROUP BY t1.id
    ORDER BY t1.id
    Hello world ! Segmentation fault (core dumped)
    21.4.2015 09:49 Jiri Tomasek
    Rozbalit Rozbalit vše Re: Postgres: filtrovani na zaklade vztahu mezi jednotlivymi radky
    No vida, to je taky hezky reseni :)

    Založit nové vláknoNahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.