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 04:11 | Komunita

    Fedora je od 10. února dostupná v Sýrii. Sýrie vypadla ze seznamu embargovaných zemí a Fedora Infrastructure Team mohl odblokovat syrské IP adresy.

    Ladislav Hagara | Komentářů: 6
    dnes 03:44 | Zajímavý projekt

    Ministerstvo zahraničí Spojených států amerických vyvíjí online portál Freedom.gov, který umožní nejenom uživatelům v Evropě přístup k obsahu blokovanému jejich vládami. Portál bude patrně obsahovat VPN funkci maskující uživatelský provoz tak, aby se jevil jako pocházející z USA. Projekt měl být původně představen již na letošní Mnichovské bezpečnostní konferenci, ale jeho spuštění bylo odloženo.

    NUKE GAZA! 🎆 | Komentářů: 3
    dnes 03:33 | Komunita

    Byla vydána pro lidi zdarma ke stažení kniha The Book of Remind věnovaná sofistikovanému kalendáři a připomínači Remind.

    Ladislav Hagara | Komentářů: 0
    včera 23:55 | Nová verze

    Grafický editor dokumentů LyX, založený na TeXu, byl vydán ve verzi 2.5.0. Oznámení připomíná 30. výročí vzniku projektu. Novinky zahrnují mj. vylepšení referencí nebo použití barev napříč aplikací, od rozhraní editoru po výstupní dokument.

    |🇵🇸 | Komentářů: 0
    včera 15:00 | Komunita

    F-Droid bannerem na svých stránkách a také v aplikacích F-Droid a F-Droid Basic upozorňuje na iniciativu Keep Android Open. Od září 2026 bude Android vyžadovat, aby všechny aplikace byly registrovány ověřenými vývojáři, aby mohly být nainstalovány na certifikovaných zařízeních Android. To ohrožuje alternativní obchody s aplikacemi jako F-Droid a možnost instalace aplikací mimo oficiální obchod (sideloading).

    Ladislav Hagara | Komentářů: 21
    20.2. 16:33 | Nová verze

    Svobodná historická realtimová strategie 0 A.D. (Wikipedie) byla vydána ve verzi 28 (0.28.0). Její kódový název je Boiorix. Představení novinek v poznámkách k vydání. Ke stažení také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    20.2. 04:44 | Nová verze

    Multimediální server a user space API PipeWire (Wikipedie) poskytující PulseAudio, JACK, ALSA a GStreamer rozhraní byl vydán ve verzi 1.6.0 (Bluesky). Přehled novinek na GitLabu.

    Ladislav Hagara | Komentářů: 1
    20.2. 01:11 | Nová verze

    UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala Ubuntu Touch 24.04-1.2 a 20.04 OTA-12.

    Ladislav Hagara | Komentářů: 0
    19.2. 18:00 | Nová verze

    Byla vydána (Mastodon, 𝕏) nová stabilní verze 2.0 otevřeného operačního systému pro chytré hodinky AsteroidOS (Wikipedie). Přehled novinek v oznámení o vydání a na YouTube.

    Ladislav Hagara | Komentářů: 1
    19.2. 16:00 | Zajímavý software

    WoWee je open-source klient pro MMORPG hru World of Warcraft, kompatibilní se základní verzí a rozšířeními The Burning Crusade a Wrath of the Lich King. Klient je napsaný v C++ a využívá vlastní OpenGL renderer, pro provoz vyžaduje modely, grafiku, hudbu, zvuky a další assety z originální kopie hry od Blizzardu. Zdrojový kód je na GitHubu, dostupný pod licencí MIT.

    NUKE GAZA! 🎆 | Komentářů: 7
    Které desktopové prostředí na Linuxu používáte?
     (18%)
     (6%)
     (0%)
     (11%)
     (27%)
     (2%)
     (5%)
     (2%)
     (12%)
     (26%)
    Celkem 928 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Dotaz: Neumím použít agregační funkci

    25.11.2019 13:33 Paulus | skóre: 15 | Jihlava
    Neumím použít agregační funkci
    Přečteno: 1185×
    Dobrý den, z následující tabulky:

    Případ	STAVDO	CREATE_UZIVATEL	CASPREPNUTI
    První	SCHV	TUMJAN		2018-03-26T14:01:37.000+02:00
    První	SCHV	TUMJAN		2018-05-07T12:40:58.000+02:00
    První	SCHV	TUMJAN		2018-05-30T12:47:06.000+02:00
    První	SCHVAL	TUMJAN		2018-06-04T10:03:03.000+02:00
    První	SCHVAL	KULSVA		2018-08-10T15:29:15.000+02:00
    Druhý	SCHVAL	TUMJAN		2018-08-09T12:18:51.000+02:00
    Druhý	SCHV	TUMJAN		2018-10-19T13:02:11.000+02:00
    Druhý	SCHV	KULSVA		2018-11-23T14:09:05.000+01:00
    Druhý	SCHVAL	KULSVA		2018-11-26T13:27:18.000+01:00
    

    bych chtěl vybrat za každý Případ vybrat takové řádky, které mají minimální datum STAVDO. Na hodnotě atributů STAVDO a CREATE_UZIVATEL mi nezáleží. Očekávám tedy výstup:

    Případ	STAVDO	CREATE_UZIVATEL	CASPREPNUTI
    První	SCHV	TUMJAN		2018-03-26T14:01:37.000+02:00
    Druhý	SCHVAL	TUMJAN		2018-08-09T12:18:51.000+02:00
    

    Pokud použiju minimum na datum, nemohu použít group by na STAVDO a CREATE_UZIVATEL. Jak z toho ven? Díky moc za pomoc,

    Pavel Novák

    Řešení dotazu:


    Odpovědi

    Řešení 1× (Paulus (tazatel))
    xkucf03 avatar 25.11.2019 15:20 xkucf03 | skóre: 50 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Neumím použít agregační funkci

    Pomocí window funkcí takto:

    #!/bin/bash
    
    data="Případ    STAVDO  CREATE_UZIVATEL CASPREPNUTI
    První   SCHV    TUMJAN          2018-03-26T14:01:37.000+02:00
    První   SCHV    TUMJAN          2018-05-07T12:40:58.000+02:00
    První   SCHV    TUMJAN          2018-05-30T12:47:06.000+02:00
    První   SCHVAL  TUMJAN          2018-06-04T10:03:03.000+02:00
    První   SCHVAL  KULSVA          2018-08-10T15:29:15.000+02:00
    Druhý   SCHVAL  TUMJAN          2018-08-09T12:18:51.000+02:00
    Druhý   SCHV    TUMJAN          2018-10-19T13:02:11.000+02:00
    Druhý   SCHV    KULSVA          2018-11-23T14:09:05.000+01:00
    Druhý   SCHVAL  KULSVA          2018-11-26T13:27:18.000+01:00";
    
    dotaz="SELECT případ, stavDo, create_uzivatel, casPrepnuti FROM (
            SELECT *, rank() OVER(PARTITION BY případ ORDER BY casPrepnuti) AS rank FROM csv
    ) WHERE rank = 1 ORDER BY případ DESC";
    
    echo "$data" \
            | sed  -E 's/\t+/,/g' \
            | relpipe-in-csv \
            | relpipe-tr-sql --relation "první_ve_skupině" "$dotaz" \
            | relpipe-out-tabular
    první_ve_skupině:
     ╭─────────────────┬─────────────────┬──────────────────────────┬───────────────────────────────╮
     │ Případ (string) │ STAVDO (string) │ CREATE_UZIVATEL (string) │ CASPREPNUTI          (string) │
     ├─────────────────┼─────────────────┼──────────────────────────┼───────────────────────────────┤
     │ První           │ SCHV            │ TUMJAN                   │ 2018-03-26T14:01:37.000+02:00 │
     │ Druhý           │ SCHVAL          │ TUMJAN                   │ 2018-08-09T12:18:51.000+02:00 │
     ╰─────────────────┴─────────────────┴──────────────────────────┴───────────────────────────────╯
    Record count: 2

    DBMS je musí podporovat (např. v SQLite je to až od 3.25.0).

    Případně v PostgreSQL to jde jednodušeji pomocí DISTINCT ON.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    26.11.2019 11:11 Paulus | skóre: 15 | Jihlava
    Rozbalit Rozbalit vše Re: Neumím použít agregační funkci
    Funguje, jak má. Děkuji moc za pomoc.
    Řešení 1× (Paulus (tazatel))
    25.11.2019 19:26 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Neumím použít agregační funkci
    Bez window funkcí si musíte v jednom SELECTu seskupit řádky podle Případ a ke každé skupině vybrat minimální CASPREPNUTI. V druhém SELECTu vezmete tyhle dvojice (Případ + CASPREPNUTI) a ke každé z nich si donačtete zbývající údaje z řádku. A samozřejmě ty dva SELECTy nebudete provádět za sebou, ale spojíte je do jednoho, např. pomocí JOINu.
    SELECT * FROM table t
    JOIN
      (SELECT Případ, MIN(CASPREPNUTI) AS CASPREPNUTIFROM table GROUP BY Případ) g
      ON (t.Případ = g.Případ AND t.CASPREPNUTI= g.CASPREPNUTI)
    
    25.11.2019 19:28 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Neumím použít agregační funkci
    A ještě by bylo vhodné, aby na dvojici Případ + CASPREPNUTI byl unikátní index. Kdyby se v databázi vyskytla duplicita, vrátí vám v tom mém dotazu databáze všechny záznamy, které v té skupině nejmenší čas přepnutí, tj. měl byste tam skupinu duplicitně.
    26.11.2019 11:09 Paulus | skóre: 15 | Jihlava
    Rozbalit Rozbalit vše Re: Neumím použít agregační funkci
    Dobrý den,

    děkuji moc za pomoc. Něco takového jsem předpokládal, jen jsem nevěděl, jestli neexistuje snazší cesta.

    PN

    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.