Portál AbcLinuxu, 8. května 2025 04:41

Dotaz: SQL SELECT pro zjištění nejčastějšího výskytu

10.1.2011 18:43 dvfx
SQL SELECT pro zjištění nejčastějšího výskytu
Přečteno: 1704×
Odpovědět | Admin
Zdravím,

pro SELECT lze provést GROUP BY s přípazy MIN, MAX apod.

Nikde jsem ale nenalezl, jestli existuje možnost zobrazit jen tu hodnotu, která se v příslušním poli vyskytuje nejčastěji nebo nejméně často.

Může mi s tímto někdo poradit? Pro d.DEALER by jsem chtěl zobrazit tu hodnotu, která se v poli pro každého ID_PARTNERA vyskytuje nejčastěji.

Děkuji

SELECT d.ID_PARTNERA, MAX(d.NAZEV) AS NAZEV, ????MAX(d.DEALER) AS DEALER, SUM(d.SUMA) AS CASTKA, COUNT(DISTINCT d.ID_ODBERATELE) AS POCET_DOD_MIST FROM d GROUP BY d.ID_PARTNERA

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.1.2011 07:35 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: SQL SELECT pro zjištění nejčastějšího výskytu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pomocí COUNT() a GROUP BY si ve vnořeném SELECTu spočítejte počty a ve vnějším SELECTu to pak podle toho počtu seřaďte. V některých databázích na to možná budou speciální analytické funkce.
11.1.2011 07:43 Martin Beránek | skóre: 33 | blog: mousehouse | Brno
Rozbalit Rozbalit vše Re: SQL SELECT pro zjištění nejčastějšího výskytu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mohlo by to jit nejak takto:
select d1.id, max(d1.nazev) as nazev, (select oftenvalue from (select count(*) as counter,d2.dealer as oftenvalue from d as d2 where d2.id = d1.id  group by d2.dealer order by counter limit 1) as foo) as dealer, sum(d1.sumas) as castka, ..... from d as d1 group by d.id
                                       ^--------------------------------------------------------------------------------------------------------------------------------------------------------------^
Relevantní část jsem vyznačil pomocí ^
never use rm after eight
11.1.2011 07:47 Martin Beránek | skóre: 33 | blog: mousehouse | Brno
Rozbalit Rozbalit vše Re: SQL SELECT pro zjištění nejčastějšího výskytu
koukam ze ten select oftenvalue je tam zbytecny... protoze d2.delaer nemusi byt v selectu a pritom muze byt v group by
never use rm after eight
11.1.2011 07:58 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozbalit Rozbalit vše Re: SQL SELECT pro zjištění nejčastějšího výskytu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Bud korelovanej poddotaz s pouziti having, nebo pouzit limit.
Ja bych to udělal asi takhle:
Select neco from
  (Select 
     neco, 
     count(*) pocet 
   from tbl 
   group by neco) dta
order by pocet
limit 1;
Nejsem blbý, jen se hloupě ptám

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.