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

Po dvou letech od vydání verze 3.0 byla vydána nová major verze 4.0 nástrojů LXC, LXD a LXCFS pro kontejnerovou virtualizaci LXC (LinuX Containers). Jedná se o verzi s dlouhodobou podporou (LTS). Ta končí v červnu 2025. Přehled novinek v jednotlivých oznámeních o vydání: LXC, LXD a LXCFS.

Ladislav Hagara | Komentářů: 0
dnes 16:11 | Humor

Řada firem své letošní již připravené aprílové žertíky kvůli SARS-CoV-2 a COVID-19 nezveřejnila. Přehled zveřejněných například na April Fools' Day On The Web. Na CoinMarketCapu byla přidána nová kryptoměna: toaleťáky. Ve hře World of Tanks jsou vylepšené tanky, v PUBG nový herní mód Fantasy Battle Royale, …

Ladislav Hagara | Komentářů: 3
dnes 15:22 | Zajímavý projekt

Komunity KDE a GNOME, které doposud vyvíjely příslušná desktopová prostředí, se rozhodly přestat tříštit síly a představují společný projekt KNOME, který nabídne konfigurovatelnost GNOME a jednoduchost KDE v jednom balíčku. Staví na technologiích QTK3 a Kutter.

Fluttershy, yay! | Komentářů: 20
dnes 14:11 | Nová verze

Tradičně na apríla byla vydána nová stabilní verze OpenTTD (Wikipedie), tj. open source klonu hry Transport Tycoon Deluxe. Přehled novinek v nejnovější verzi 1.10.0 v seznamu změn. Starší verzi OpenTTD lze vyzkoušet také v prohlížeči.

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

Po čtyřech a půl měsících vývoje od vydání verze 5.3 byla vydána nová verze 5.4 svobodného open source redakčního systému WordPress. Kódové označení Adderley bylo vybráno na počest amerického jazzového trumpetisty Nata Adderleyho.

Ladislav Hagara | Komentářů: 0
včera 23:44 | IT novinky

Association for Computing Machinery vzhledem k probíhající pandemii COVID-19 nabízí bezplatný přístup do databáze publikací ACM Digital Library, a to do 30. června 2020.

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

Humble Bundle nabízí balík her (některých multiplatformních a/nebo bez DRM), knih, komiksů,… za cenu alespoň €28. Akce Humble Conquer COVID-19 Bundle probíhá do 7. dubna. Výtěžek bude věnován humanitárním/charitativním organizacím Lékaři bez hranic, Direct Relief, International Rescue Committee a Partners In Health.

Fluttershy, yay! | Komentářů: 7
včera 18:44 | Komunita

Český LibreOffice tým vydává překlad příručky LibreOffice Online. Příručka vznikla překladem anglického originálu, který byl vytvořen v rámci projektu Google Season of Docs 2019. Příručka je ke stažení na českých stránkách LibreOffice. Český tým pokračuje s překladem příručky Začínáme s LibreOffice a hledá další dobrovolníky pro překlad z angličtiny a revize přeloženého textu.

Zdeněk Crhonek | Komentářů: 0
včera 17:55 | Nová verze

Theia je nové modulární vývojové prostředí (IDE) určené k běhu jako webová aplikace a modifikovatelné pomocí doplňků kompatibilních s MS Visual Studio Code. Vývoj zaštiťuje Eclipse Foundation. Více v oznámení vydání verze 1.0.

Fluttershy, yay! | Komentářů: 1
včera 17:44 | Upozornění

V souvislosti s nedávnými kybernetickými útoky na nemocniční zařízení v České republice nabídl Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) ve spolupráci se sdružením CZ.NIC, správcem české národní domény a provozovatelem Národního bezpečnostního týmu CSIRT.CZ, pomoc klíčovým zdravotnickým subjektům, na které se vztahuje reaktivní opatření NÚKIB.

Ladislav Hagara | Komentářů: 2
Chodíte do práce?
 (11%)
 (0%)
 (7%)
 (0%)
 (61%)
 (21%)
 (0%)
Celkem 28 hlasů
 Komentářů: 1, poslední dnes 14:40
Rozcestník

www.AutoDoc.Cz

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: 560×
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.