» Poradna » Programy

SQL dotaz - maximální hodnota řádku z tabulky

 |   |  Microsoft Windows 10 IE 11.0

Dobrý den. Prosím o pomoc.Zadání:=======Potřebuji dostat maximální počet chyb u každého ze serverů v daném dni a datum kdy k nejvyššímu poštu chyb došlo. To vše v sumáři za 1 měsíc.Tabulka (3 sloupce)===================Datum_vlozeni Nazev_Serveru Pocet_chyb==========================================2016-01-01 Server01 22016-01-01 Server02 52016-01-01 Server03 12016-01-02 Server01 62016-01-02 Server02 42016-01-02 Server03 22016-01-03 Server01 22016-01-03 Server02 52016-01-03 Server03 1Výsledek by pak měl vypadat takto:==================================Od 1.1.2016 do 31.1.2016 došlo k těmto maximálním hodnotám:2016-01-02 Server01 62016-01-01 Server02 52016-01-02 Server03 2Poradíte?Nedaří se mi totiž do výsledku vepsat datum_vlozeni s maximálním počtem chybMám jen toto:=============SELECT nazev_serveru + ',' + CONVERT (varchar(9),MAX(pocet_chyb),1) FROM tabulkawhere datum_vlozeni >= '2016-01-01' AND datum_vlozeni <= '2016-01-31'GROUP BY nazev_serveru

Mohlo by vás také zajímat

Odpovědi na otázku

 | Linux Firefox 47.0

Jestli to chces i podle data vlozeni, tak ho musis pridat i do group by. SELECT datum_vlozeni, nazev_serveru + ',' + CONVERT (varchar(9),MAX(pocet_chyb),1)FROM tabulkawhere datum_vlozeni >= '2016-01-01' AND datum_vlozeni <= '2016-01-31'GROUP BY datum_vlozeni, nazev_serveru

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 IE 11.0

Děkuji za odpověď. Potřeboval bych ale aby se záznamy neopakovaly.Tj. abych dostal vždy jen tři hodnoty (severy) a k tomu datum kdy bylo počet chyb na nejvyšší hodnotě. Pokud bylo stejný počet ve více dnech stačí mi jen ten první den, kdy bylo maxima dosáhnuto.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Chrome 51.0.2704.103

No pokud to chces od nejvyssiho poctu chyb musis jeste na konec dopsat aby to tridilo. ORDER BY Pocet_chyb (DESC) - desc doplnis jen pokud to chces od nejmensi do nejvetsi a naopak.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 IE 11.0

ODER BY nemohu dle SQL serveru použít společně s GROUP BY.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 47.0

Jasneze muzes, ale ne podle sloupecku, na kterem groupujes. Muzes radit podle poctu. SELECT xxx, MAX(pocet_chyb) pocet FROM....Group by ...Order by pocet;

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 47.0

Tak sorry, asi jsem spatne pochopil zadani. Co je to za SQL server? Rekl bych, ze tohle se bez vnoreneho selectu/joinu neobejde. V Oraclu bych to udelal takhle(odzkouseno):select distinct nazev_serveru, pocet_chyb, datum_vlozen from tabulka right join(select nazev_serveru nazev, max(pocet_chyb) maxpocet from tabulka group by nazev_serveru)on tabulka.nazev_serveru = nazev and pocet_chyb=maxpocet order by nazev_serveru asc;Vysledek: Server01 6 02-JAN-16 12.00.00.000000000 AMServer02 5 01-JAN-16 12.00.00.000000000 AMServer02 5 03-JAN-16 12.00.00.000000000 AMServer03 2 02-JAN-16 12.00.00.000000000 AM

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 IE 11.0

Jedná se o sql 2014, ale už to je ok viz diskuze níže. Každopádně moc děkuji za rady.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 47.0

http://stackoverflow.com/questions/4751913/retriev... Pouzi CTE spolu s row_number. Je to najelegantnejsie..

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 47.0

--napisano naslepo :);with cteRowNumber as ( SELECT nazev_serveru ,pocet_chyb, datum_vlozeni , row_number() over(partition by nazev_serveru order by pocet_chyb desc) as RowNumFROM tabulka where datum_vlozeni >= '2016-01-01' AND datum_vlozeni <= '2016-01-31')select nazev_serveru ,pocet_chyb, datum_vlozeni from cteRowNumber where RowNum = 1

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 IE 11.0

Prostě kdo umí umí Perfektní, to je ono.Děkuju moc.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 71.0.3578.98

jdi do píči

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Maximální hodnota, Maximální počet