NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 6 - MS-SQL krok za krokem: Výběr dat (vyhledávání)

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Milan Jiroušek:17.7.2017 12:36

Malá oprava. Výběr uživatelů, kteří se narodili mezi lety 1980 a 1990 (včetně) by měl vypadat takto:
SELECT [Jmeno], [Prijmeni], [DatumNarozeni] FROM [Uzivatele] WHERE [DatumNarozeni] BETWEEN '1980-1-1' AND '1990-12-31';
nebo
SELECT [Jmeno], [Prijmeni], [DatumNarozeni] FROM [Uzivatele] WHERE YEAR([DatumNa­rozeni]) BETWEEN 1980 AND 1990;

 
Odpovědět
17.7.2017 12:36
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Milan Jiroušek
David Hartinger:8.11.2017 20:23

Díky za postřeh, přidám tam i tuto variantu.

Odpovědět
8.11.2017 20:23
New kid back on the block with a R.I.P
Avatar
Miloš Etlík:20.2.2020 14:58

Ahoj mám dotaz s jazykem SQL začínám a mám problém s vybráním dat která mám ve formátu viz obrázek. Problém je že se opakujíé data se stejnou časovou známkou potřebuji vybrat data která budou mít jedinečnou časoovou známku a v případě že je více stejné čas. známky vzít ty hodnotu z ostatních sloupců nejvyšší? Muže někdo navést jakým směrem se dát prosím ?

 
Odpovědět
20.2.2020 14:58
Avatar
Odpovídá na Miloš Etlík
Miloš Etlík:20.2.2020 15:07

Takhle to mám ted jedná se o dotaz v programu Ignition

SELECT NSP5_Ignition.NSP5_Machine_Tem­p_ActTemperatu­re_TIMESTAMP AS time,
NSP5_Ignition.NSP5_Machine_Tem­p_ActTemperatu­re_VALUE AS Teplota_v_kabině,
NSP5_Ignition2. NSP5_Machine_Ti­me_Remaining_ti­me_Total_VALUE AS Čas_celkový
FROM NSP5_Ignition2
where NSP5_Ignition.NSP5_Machine_Tem­p_ActTemperatu­re_TIMESTAMP > DATEADD(HOUR,-12,getdate())
GROUP BY NSP5_Ignition.NSP5_Machine_Tem­p_ActTemperatu­re_TIMESTAMP ,
NSP5_Ignition.NSP5_Machine_Tem­p_ActTemperatu­re_VALUE ,
NSP5_Ignition2. NSP5_Machine_Ti­me_Remaining_ti­me_Total_VALUE
order by time asc

 
Odpovědět
20.2.2020 15:07
Avatar
Jakub Švasta
Lektor
Avatar
Odpovídá na Miloš Etlík
Jakub Švasta:21.2.2020 0:09

Ignition neznám, ale tohle se dělá všude stejně:

SELECT NSP5_Ignition2.NSP5_Machine_Temp_ActTemperature_TIMESTAMP AS time,
MAX(NSP5_Ignition2.NSP5_Machine_Temp_ActTemperature_VALUE) AS Teplota_v_kabině,
MAX(NSP5_Ignition2. NSP5_Machine_Time_Remaining_time_Total_VALUE) AS Čas_celkový
FROM NSP5_Ignition2
where NSP5_Ignition2.NSP5_Machine_Temp_ActTemperature_TIMESTAMP > DATEADD(HOUR,-12,getdate())
GROUP BY NSP5_Ignition2.NSP5_Machine_Temp_ActTemperature_TIMESTAMP

Obecně to funguje takhle:

SELECT
        MAX(SloupecA),  -- vezmi maximum pro stejné hodnoty
        MIN(SloupecB),  -- u jiného sloupce nemusím chtít maximum, ale třeba minimum
        SloupecC,
        SloupecD        -- všechny ostatní sloupce, co chci vybrat
FROM MojeTabulka
GROUP BY
        SloupecC,
        SloupecD        -- ty všechny ostatní sloupce, co chci vybrat

Kdyžtak je to popsané v následující lekci. :-)

 
Odpovědět
21.2.2020 0:09
Avatar
Miloš Etlík:21.2.2020 6:45

Ahoj děkuju Ignition je SCADA v průmyslu ale máš pravdu mělo by to být stejné bohužel s max jsem zkoušel taky ale můj problém zůstane u toho že mě dotaz vybere i stejné časové známky Ja bych potřeboval vybrat jen řádky kde není stejná časová známka bohužel Kepware(OPC server) do databáze ukládá hodnoty pokaždé když se změní sledovaný parametr a to se stává i se stejnou časovou známkou. já potřebuji pomocí Ignition data zobrazovat v průmyslu na panelech a stejná časová známka mě dělá problém s objemem dat celé zobrazení je pak pomalé a doba na dotaz hrozně dlouhá.

 
Odpovědět
21.2.2020 6:45
Avatar
Jakub Švasta
Lektor
Avatar
Odpovídá na Miloš Etlík
Jakub Švasta:21.2.2020 13:57

Když to sgrupneš (to je slovo!) podle časové známky, tak by to každou její hodnotu mělo vybrat jen jednou. Koukni na obrázek níž (ukázka z SQL Serveru).

Jedině, že by Ignition používalo nějaký divný dialekt SQL, kde se nepoužívá funkce MAX tímhle způsobem, ale to se mi nezdá.
Anebo mě napadá, že se možná ty časové známky liší v tisícinách vteřiny, ale v náhledu to vypadá, že jsou stejné, protože tam jsou vidět jen celé sekundy.

 
Odpovědět
21.2.2020 13:57
Avatar
Jaroslav Drobek:19.10.2022 11:56

"..chceme 10 řádku z vrchu.."

 
Odpovědět
19.10.2022 11:56
Avatar
Petr Lorenz
Člen
Avatar
Petr Lorenz:4.4.2023 13:34

Ahoj, nevím jestli dělám něco špatně nebo ne. Když si chci přidat do tabulky skrze T-SQL údaje do tabulky. Tak jak to je v lekci, tak mi to nejde a červeně se mi označí slovo **CREATE **.
A to jsem to zkoušel jak přepisovat ručně, tak také ctrl + c, ctrl + v. A pořád nemůžu přijít na to kde je problém.

 
Odpovědět
4.4.2023 13:34
Avatar
Luboš Polák :21.4.2023 15:59

v tabulce za
SELECT * FROM [Uzivatele] WHERE [DatumNarozeni] >= '1960-1-1' AND [PocetClanku] > 5;
Zdroj: https://www.itnetwork.cz/…-vyhledavani
je zřejmě o dva řádky víc

 
Odpovědět
21.4.2023 15:59
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 27.