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:33 | Nová verze

    Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za květen (YouTube).

    Ladislav Hagara | Komentářů: 4
    včera 11:22 | Bezpečnostní upozornění

    Úřad pro ochranu osobních údajů řeší desítky stížností na jednotné měsíční hlášení zaměstnavatele, které stát spustil počátkem dubna. Systém, jenž má firmám odlehčit od desítek formulářů, nejenže výrazně zatížil jejich účetní oddělení, ale docházelo v něm i k únikům osobních dat zaměstnanců k firmám, kde nepracovali. Podle ministerstva práce a sociálních věcí stála za problémem technická chyba. „Incident se týkal několika stovek

    … více »
    Ladislav Hagara | Komentářů: 10
    včera 10:46 | Nová verze

    Byla vydána (𝕏, Bluesky) nová verze 22.0.0 open source webového aplikačního frameworku Angular (Wikipedie). Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    včera 04:33 | Nová verze

    Vim Classic byl vydán ve verzi 8.3. Drew DeVault oznámil tento fork editoru Vim (verze 8.2.0148, tj. těsně před zavedením Vim9 skriptování) v březnu letošního roku. Důvodem forku bylo, že vývojáři editorů Vim a Neovim začali při vývoji využívat LLM.

    Ladislav Hagara | Komentářů: 5
    včera 03:44 | Komunita

    Open source konference DevConf.CZ 2026 proběhne 18. a 19. června v Brně na FIT VUT. Publikován byl program a spuštěna byla registrace.

    Ladislav Hagara | Komentářů: 0
    3.6. 19:44 | Nová verze

    Společnost JetBrains uvolnila verzi 2 svého open-source velkého jazykového modelu (LLM) pro vývojáře Mellum.

    Ladislav Hagara | Komentářů: 0
    3.6. 14:44 | IT novinky

    Probíhá konference Microsoft Build 2026. Microsoft představuje své novinky: kvantový čip Majorana 2, Surface Laptop Ultra a Surface RTX Spark Dev Box s NVIDIA RTX Spark, Intelligent Terminal, Coreutils for Windows (fork Rust Coreutils), AI modely MAI, AI agenta Scout, platformu pro agent-first zařízení Project Solara, …

    Ladislav Hagara | Komentářů: 0
    3.6. 12:44 | Nová verze

    Google Chrome 149 byl prohlášen za stabilní. Nejnovější stabilní verze 149.0.7827.53 přináší řadu novinek. Podrobný přehled v poznámkách k vydání. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    3.6. 10:55 | Nová verze

    Pluto.jl, reaktivní notebook pro programovací jazyk Julia, dospěl do verze 1.0.

    Ladislav Hagara | Komentářů: 5
    2.6. 13:44 | Nová verze

    Byla vydána nová verze 12.0.0 vizuálního programovacího jazyka Snap! (Wikipedie) inspirovaného jazykem Scratch (Wikipedie). Přehled novinek na GitHubu.

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