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í
×
    včera 04:00 | Nová verze

    raylib (Wikipedie), tj. multiplatformní open-source knihovna pro vývoj grafických aplikací a her, byla vydána ve verzi 6.0.

    Ladislav Hagara | Komentářů: 0
    24.4. 18:33 | IT novinky

    Nové verze AI modelů. Společnost OpenAI představila GPT‑5.5. Společnost DeepSeek představila DeepSeek V4.

    Ladislav Hagara | Komentářů: 0
    24.4. 15:33 | Zajímavý článek

    Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 164 (pdf) a Hello World 29 (pdf).

    Ladislav Hagara | Komentářů: 0
    24.4. 04:44 | Komunita

    Bylo oznámeno, že webový prohlížeč Opera GX zaměřený na hráče počítačových her je už také na Flathubu and Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    23.4. 23:11 | IT novinky

    Akcionáři americké mediální společnosti Warner Bros. Discovery dnes schválili převzetí firmy konkurentem Paramount Skydance za zhruba 110 miliard dolarů (téměř 2,3 bilionu Kč). Firmy se na spojení dohodly v únoru. O část společnosti Warner Bros. Discovery dříve usilovala rovněž streamovací platforma Netflix, se svou nabídkou však neuspěla. Transakci ještě budou schvalovat regulační orgány, a to nejen ve Spojených státech, ale také

    … více »
    Ladislav Hagara | Komentářů: 0
    23.4. 22:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 26.04 LTS Resolute Raccoon. Přehled novinek v poznámkách k vydání. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 11. vydání s dlouhodobou podporou (LTS).

    Ladislav Hagara | Komentářů: 2
    23.4. 11:55 | Nová verze

    V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Gitea (Wikipedie) byla vydána v nové verzi 1.26.0. Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    23.4. 04:44 | Pozvánky

    Ve středu 29. dubna 2026 se v pražské kanceláři SUSE v Karlíně uskuteční 7. Mobile Linux Hackday, komunitní setkání zaměřené na Linux na mobilních zařízeních, kernelový vývoj i uživatelský prostor. Akce proběhne od 10:00 do večerních hodin. Hackday je určen všem zájemcům o praktickou práci s Linuxem na telefonech. Zaměří se na vývoj aplikací v userspace, například bankovní aplikace, zpracování obrazu z kamery nebo práci s NFC, i na úpravy

    … více »
    lkocman | Komentářů: 1
    22.4. 21:55 | Nová verze

    LilyPond (Wikipedie) , tj. multiplatformní svobodný software určený pro sazbu notových zápisů, byl vydán ve verzi 2.26.0. Přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    22.4. 20:33 | Nová verze

    Byla vydána nová verze 11.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 237 vývojářů. Provedeno bylo více než 2 500 commitů. Přehled úprav a nových vlastností v seznamu změn.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (14%)
     (8%)
     (2%)
     (13%)
     (31%)
     (3%)
     (6%)
     (2%)
     (15%)
     (25%)
    Celkem 1421 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    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: 703×
    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.