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 10:00 | Komunita

Společnost PINE64 stojící za telefonem PinePhone, notebooky Pinebook a Pinebook Pro, IP kamerou PineCube, hodinkami PineTime, páječkou (pájecím perem) Pinecil, zdroji PinePower nebo RISC-V vývojovou deskou PineCone publikovala na svém blogu lednový souhrn novinek. Opět společně s videem (YouTube, LBRY, TILvids). Od 18. ledna bude možné objednat PinePhone s předinstalovaným Mobianem aneb Debianem pro mobilní zařízení.

Ladislav Hagara | Komentářů: 12
včera 09:00 | Nová verze

Byla vydána nová verze 3.6 svobodného notačního programu MuseScore (Wikipedie). Představení novinek také na YouTube. Zdůrazněn je nový font Leland. Jeho představení na YouTube.

Ladislav Hagara | Komentářů: 0
15.1. 18:44 | Zajímavý projekt

Fedora Magazine představil projekt Fedora Kinoite aneb Fedoru Silverblue s prostředím KDE Plasma. Fedora Silverblue je neměnný systém s atomickými aktualizacemi, tj. základní systém je distribuován jako celek, s prostředím GNOME.

Ladislav Hagara | Komentářů: 4
15.1. 10:00 | IT novinky

Projekty Elasticsearch a Kibana, doposud distribuované pod licencí Apache 2.0, přejdou na duální licencování pod Server-Side Public License (původně používanou pro MongoDB a neschválenou jako open-source organizací OSI) a vlastní source-available licencí. Změna vejde v platnost počínaje vydáním 7.11.

Fluttershy, yay! | Komentářů: 0
15.1. 09:00 | Komunita

Na Humble Bundle lze do neděle 17. ledna do 19:00 získat zdarma počítačovou hru Bomber Crew (YouTube, Wikipedie) běžící také v Linuxu.

Ladislav Hagara | Komentářů: 1
15.1. 08:00 | Nová verze

Minimalistická linuxová distribuce Alpine byla vydána v nové stabilní řadě 3.13. Novinkou jsou např. oficiální obrazy v cloudu (AWS EC2), vylepšené síťové nástroje nebo podpora PHP 8.0.

Fluttershy, yay! | Komentářů: 0
15.1. 07:00 | Bezpečnostní upozornění

Uživatelé Admineru verze 3.7.1 a starších mohli být 29. a 30. prosince napadeni. Útočníkovi se podařilo do souboru jush.js, který se do této verze ještě stahoval z adminer.org, vložit kód, který mu odesílal přihlašovací údaje. Pokud jste v tomto čase tuto více než 7 let starou verzi Admineru používali, tak změňte hesla databází, ke kterým jste se přihlašovali. Novější verze ovlivněné nejsou.

Ladislav Hagara | Komentářů: 2
15.1. 00:11 | Zajímavý článek

Ernie Smith píše o historii populárních routerů Linksys WRT54G, jejichž software byl založený na Linuxu, a proto posléze díky GNU GPL uvolněn jako open source, což vedlo k vývoji alternativního softwaru jako DD-WRT či OpenWrt a řadě dalších využití.

Fluttershy, yay! | Komentářů: 0
14.1. 18:11 | Nová verze

Po roce vývoje od vydání verze 5.0 a více než 8 300 změnách byla vydána nová stabilní verze 6.0 softwaru, který vytváří aplikační rozhraní umožňující chod aplikací pro Microsoft Windows také pod GNU/Linuxem, Wine (Wikipedie). Z novinek lze zdůraznit core moduly ve formátu PE, Vulkan backend pro WineD3D, podporu DirectShow a Media Foundation nebo redesign textové konzole. Podrobnosti v poznámkách k vydání.

Ladislav Hagara | Komentářů: 4
14.1. 14:00 | Zajímavý článek

Guido Günther z Purism napsal článek Phosh Overview o uživatelském prostředí pro mobilní systémy Phosh. Přehledově popisuje co jednotlivé komponenty dělají a jak jsou propojeny.

joejoe | Komentářů: 1
Jestliže používáte distribuci CentOS, kterou náhradu plánujete vzhledem k oznámenému ukončení vydávání?
 (31%)
 (3%)
 (2%)
 (24%)
 (0%)
 (2%)
 (39%)
Celkem 147 hlasů
 Komentářů: 3, poslední 10.1. 13:01
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: 839×
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: 49 | 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.