Diskuze: Výběrový dotaz
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 11 zpráv z 11.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj,
v první řadě slovo viz není zkratka, takže se za tím tečka
nepíše.
V druho řadě zkus něco jako
SELECT ...
WHERE pzu_do = '20141231'
GROUP BY MAX(poradi)
// případně
GROUP BY sloupec HAVING MAX(poradi)
Myslím, že by to nějak takto mělo jít, ale neřeknu ti to z hlavy přesně
Šel bych na to spíš takhle:
SELECT ucet, MAX(poradi)
FROM tabulka
WHERE pzu_do = 20141231
GROUP BY ucet
Ověř si ale, že to vrací opravdu to, co potřebuješ 
Tohle by mělo fungovat určitě:
SELECT ucet
FROM tabulka
WHERE pzu_do = 20141231
AND poradi = (SELECT MAX(poradi) FROM tabulka)
Tak bohužel, žádné navržené řešení mi správné výsledky nevrací
. Kdyby byl někdo ochotný mi
pomoct, pošlu celou tabulku. Mám ji v XLSX, neumím ji sem přidat jako
přílohu. PZU_DO je konec platnosti účtu, PORADI je pořadové číslo účtu
a UCET je jasný. Potřebuju vybrat účty, které skončily k 31.12.2014
(20141231) a není založen účet další. Je to např. účet 69197, poradi 0,
nebo 69180, poradi 8.
A toto?
SELECT * FROM Tabulka WHERE MAX(pzu_do) = 20141231
Hodí chybu:
An aggregate may not appear in the WHERE clause unless it is in a subquery
contained in a HAVING clause or a select list, and the column being aggregated
is an outer reference.
Co ti poslal Lukáš Červený musí fungovat:
SELECT ucet
FROM tabulka
WHERE pzu_do = 20141231
AND poradi = (SELECT MAX(poradi) FROM tabulka)
Z tvého zadání se nedá moc vyčíst jaké pořadí chceš. Možná chceš spíš tohle:
SELECT ucet
FROM tabulka
WHERE pzu_do = 20141231
AND poradi = (SELECT MAX(poradi) FROM tabulka WHERE pzu_do = 20141231)
Jinak to pak jde udělat nějak i tím GROUP BY,ale tohle mi přijde jednodušší.
Asi bych podmínku napsal takhle:
pzu_do = 20141231 AND poradi <= max(poradi)
Dám sem ještě vzorek dat okolo těch účtů, co jsem napsal výše (TUČNĚ
JSOU TY ZÁZNAMY, KTERÉ POTŘEBUJU VYBRAT):
UCET PORADI PZU_DO
69170 9 20111231
69170 10 99999999
69180 0 19991231
69180 1 20001231
69180 2 20011231
69180 3 20021231
69180 4 20031231
69180 5 20041231
69180 6 20051231
69180 7 20061231
69180 8 20141231
69180 9 99999999
69190 9 99999999
69190 0 20011231
69190 1 20021231
69190 2 20031231
69190 3 20041231
69190 4 20051231
69190 5 20061231
69190 6 20111231
69190 8 20141231
69194 0 20031231
69194 1 20041231
69194 2 20051231
69194 3 20061231
69194 4 20111231
69195 0 20051231
69195 1 20111231
69196 1 20111231
69197 0 20141231
69197 1 99999999
69198 0 20121231
69199 0 99999999
No, tu podminku sem zmršil.
Měla by být takhle:
pzu_do = 20141231 AND poradi = max(poradi)
(max(poradi) ve skupině stejných čísel účtů)
Aha, už rozumím, nejasně ses vyjádřil. Toto: "max(poradi) ve skupině
stejných čísel účtů" jsi měl říct už na začátku
Dotaz pak vypadá takhle:
SELECT ucet, poradi, pzu_do
FROM tabulka
INNER JOIN (SELECT ucet AS c_uctu, MAX(poradi) AS max_pro_ucet FROM tabulka GROUP BY ucet) m ON m.c_uctu = ucet AND m.max_pro_ucet = poradi
WHERE pzu_do = 20141231
Děkuju moc Všem za pomoc!
Zobrazeno 11 zpráv z 11.
