Hirdetés
- HiFi műszaki szemmel - sztereó hangrendszerek
- Milyen monitort vegyek?
- Milyen videókártyát?
- Milyen hangkártyát vegyek?
- Vezetékes FEJhallgatók
- TCL LCD és LED TV-k
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- OLED TV topic
- SteamOS gyere már PC-re! Nem, még nem jött el az idő.
- Soundbar, soundplate, hangprojektor
Új hozzászólás Aktív témák
-
martonx
veterán
Ha ez úgyis tárolt eljárás (amire persze egyesek szerint úgy sincs semmi szükség), akkor tedd meg azt, hogy az alselect-et bedobod egy temp táblába, a temp tábla range_id-jére pedig teszel egy index-et (amivel egyesek szerint úgyse gyorsul számottevően semmi). Ezzel, ha minden igaz, drasztikusan le tudod redukálni a futásidőt.
-
Apollo17hu
őstag
Akkor átírva a fentit ez jó?
SELECT t2.range_from
,t2.range_to
,MIN(CASE
WHEN t2.range_from >= t1.range_from AND t2.range_to <= t1.range_to THEN
'I'
ELSE
'N'
END) flag
FROM t1
,t2
GROUP BY t2.range_from
,t2.range_toszerk.: Tényleg jó a Fiddle, külön öröm, hogy van benne kódformázás is.
-
Apollo17hu
őstag
SELECT tabla_1.col1
,tabla_2.col2
,MIN(CASE
WHEN tabla_1.col_1 >= tabla_2.col_1 AND tabla_1.col_2 <= tabla_2.col_2 THEN
'I'
ELSE
'N'
END) flag
FROM tabla_1
,tabla_2
GROUP BY tabla_1.col1
,tabla_2.col2Itt nem 'TRUE' jelenik meg, hanem 'I', ha a 2. táblában legalább egy olyan tartomány van, amibe beleesik, 'N' pedig, ha nincs ilyen tartomány.
Nem ellenőriztem, próbálgasd...
Az elv az, hogy a Descartes-szorzatot a MIN() függvénnyel redukálod (méghozzá az 1. táblában szereplő sorok számára). A MIN() azért jó, mert az 'I' karakter előbb van az ABC-ben mint az 'N' karakter.
-
xeqe
csendes tag
Vagy várj, valamit elnéztem. Igazából az Osszes és a below72hours alapján nem lehet kiszámolni az above72hours értékét, hiszen utóbbi két érték esetében azok a sorok számítanak ahol valami szigorúan kisebb, illetve nagyobb, mint 72. Emiatt (below72hours + above72hours) nem feltétlen egyenlő az Osszes értékével.
Tehát egyik helyen meg kellene engedni az egyenlőséget ahhoz, hogy igaz legyen:
below72hours + above72hours = Osszes. -
xeqe
csendes tag
Amennyire én tudom, csak így lehet megoldani:
SELECT
date,
Osszes,
below72hours,
Osszes - below72hours
FROM (
SELECT
date,
COUNT(*) as Osszes,
COUNT(IF(valami < 72,valami,null)) as below72hours
FROM TABLE
GROUP BY date) as temp;És ez így még ocsmányabb, mint a te megoldásod. Amúgy a teljesítmény miatt nem kell aggódnod - ebben az esetben legalábbis. Az adatbázismotor erősen optimalizálja a lekérdezést, szóval valószínűleg az általad összehozott lekérdezés is úgy fog lefutni, hogy amint megvan az Osszes és a below72hours, egy kivonással kiszámolja a hiányzó értéket.
-
martonx
veterán
Híjnye, jól látom, hogy a MySQL-lel hivatalosan nem lehet %-ot megadni a Limitnek? Pedig ez PostgreSQL-ben, MS SQL-ben (gondolom Oracle-ben is) támogatott.
Mindegy itt egy kerülő megoldás:SELECT*
FROM (
SELECT list.*, @counter := @counter +1 AS counter
FROM (select @counter:=0) AS initvar, list
ORDER BY value DESC
) AS X
where counter <= (10/100 * @counter);
ORDER BY value DESC
Új hozzászólás Aktív témák
- Garmin Vivomove 3S Hybrid okosóra Használt, karcmentes állapotban 3 hónap garanciával!
- Samsung Galaxy A36 5G / 6/128GB / Kártyafüggetlen / 12Hó Garancia / Bontatlan
- Apple iPhone SE 2020 64GB, Kártyafüggetlen, 1 Év Garanciával
- GYÖNYÖRŰ iPhone 12 mini 128GB Blue-1 ÉV GARANCIA - Kártyafüggetlen, MS3415 94% Akkumulátor
- HP EliteBook x360 830 G7 i5-10210U Refurbished
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


