- AMD Navi Radeon™ RX 9xxx sorozat
- Milyen billentyűzetet vegyek?
- Párduc a gépben: teszten az ASUS ExpertBook Ultra
- Nem indul és mi a baja a gépemnek topik
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Vezeték nélküli fülhallgatók
- Vezetékes FÜLhallgatók
- iPad lock
- Milyen házat vegyek?
- Asztrofotózás
Új hozzászólás Aktív témák
-
nyunyu
félisten
válasz
Szancsó
#4646
üzenetére
Én kiemelném egy CTEbe az A, B összege oszlopokat, és kapna egy sorszámot összeg szerint csökkenő sorrendben, majd következő lépésben ebből válogatnám le a sorszám<=5-öt ("top 5"), és hozzáunióznám a szumma(B összeg)-et, ahol sorszám>5.
Így az eredeti táblát csak egyszer kell végigolvasni, második lépésben uniót képző 2 select már a memóriában lévő párszáz-ezer soros aggregátumból dolgozik, minimális többletköltséggel.
Valahogy így:
with summa as (
select a,
sum(b) sum_b,
row_number() over (partition by a order by sum(b) desc) rn
from tabla5
group by a),
top5_summa as (
select a,
sum_b,
rn
from summa
where rn<=5
union
select 'Többi' as a,
sum(sum_b) as sum_b,
6 as rn
from summa
where rn>5)
select a,
sum_b
from top5_summa
order by rn;Nem tudom, Firebird ismeri-e ezt a szintaxist, SQL Server kb. 2005 óta igen, meg az Oracle 11 alatt is működik.
Új hozzászólás Aktív témák
- Gyúrósok ide!
- One otthoni szolgáltatások (TV, internet, telefon)
- Formula-1
- Építő/felújító topik
- AMD Navi Radeon™ RX 9xxx sorozat
- Nagyrobogósok baráti topikja
- Milyen billentyűzetet vegyek?
- BestBuy ruhás topik
- petipetya: Nagy chili topic. :)
- Párduc a gépben: teszten az ASUS ExpertBook Ultra
- További aktív témák...
- Lenovo L13 G2 Core i7 1165G7 16 Gb Ram FullHD IPS Intel Iris Boltból Számlával Garanciával
- MikroTik CCR2116-12G-4S+
- Telefon felváráslás!! Xiaomi 13T, Xiaomi 13T Pro, Xiaomi 14T, Xiaomi 14T Pro
- Szép állapotban Lenovo ThinkPad T14s Gen 4 i5-1335u/16 GB/256 SSD/FHD+/IPS/Garancia 2027
- AKCIÓ! 100/100 - 0Perc - WD BLACK SN850P 1TB - Playstation 5
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

