Lehet valami effélét használni sqlite-ban?
select a, avg(b) from t1 where dat<(select dat from t1) group by 1;
(Ezt konkrétan nem lehet, de valahogy szeretnék egy intervallumot bejárni a feltétellel.)
Szerk: ez lett a helyes út:
SELECT a, (SELECT AVG(b) FROM t1 AS subt1 WHERE subt1.dat < mastert1.dat) FROM t1 AS mastert1
- 4233 megtekintés
Hozzászólások
Ez alapjan lehethttp://www.tutorialspoint.com/sqlite/sqlite_sub_queries.htm
De a belso select nem egy sort ad vissza. Max fgv?
- A hozzászóláshoz be kell jelentkezni
Mi a hibauzenet?
Mit akarsz logikailag, mert mem vilagos...
- A hozzászóláshoz be kell jelentkezni
A célom az lenne, hogy az elérhető összes "dat" értékre végigfusson a select, és az épp vizsgált "dat" értéknél kisebb "dat"-okra készüljön el az átlagolás (avg()).
- A hozzászóláshoz be kell jelentkezni
"Halmazelméletileg" nem túl jó a megközelítés akkor... :)
- A hozzászóláshoz be kell jelentkezni
(törölve)
- A hozzászóláshoz be kell jelentkezni
SELECT a, (SELECT AVG(b) FROM t1 AS subt1 WHERE subt1.dat < mastert1.dat) FROM t1 AS mastert1
- A hozzászóláshoz be kell jelentkezni
Igen, ez tökéletes. Köszönöm!!
- A hozzászóláshoz be kell jelentkezni
csak épp a-ra nincs group-olva
- A hozzászóláshoz be kell jelentkezni
Igazad van. Mindenesetre a fő kérdésemet megoldotta.
select * from t1;
a |b |dat
22|44|1
33|45|2
44|46|3
SELECT a, (SELECT AVG(b) FROM t1 AS subt1 WHERE subt1.dat <= mastert1.dat) FROM t1 AS mastert1;
22|44.0
33|44.5
44|45.0
- A hozzászóláshoz be kell jelentkezni
Az adatbázist nem ismerem, szóval lehet jó is a megoldás. Csak feltűnt ez az eltérés.
- A hozzászóláshoz be kell jelentkezni
A < és <= nem volt tiszta a feladatkiírás alapján, de sikerült megoldani, i am happy.
- A hozzászóláshoz be kell jelentkezni
Azért nem kell a group, mert nincs aggregátum függvény a külső selectben. A belsőben van csak, de ott meg önállóan szerepel, azaz a "maradék oszlopra kell group"-ban nincs maradék oszlop (egyszerűsítettem a fogalmazáson, bocsi)
- A hozzászóláshoz be kell jelentkezni
SQLite-ban nem tudom műxik-e:
select d.dat,avg(t1.dat)
from (select distinct dat from t1) d
join t1
on t1.dat < d.dat
Ez a tábla méretétől függően eléggé meg tudja fektetni a rendszert. :)
Egyébként mi a cél? Miért kell így átlagoli? :)
- A hozzászóláshoz be kell jelentkezni
Dátumok vannak a dat mezőben, és arra vagyok kíváncsi, hogy az idő teltével hogy változik egy másik mezőben levő értékek átlaga.
- A hozzászóláshoz be kell jelentkezni
Ha nagyon akarok, akkor ki tudok találni egy feladatot, aminek ez a megoldása, de az elmúlt 15 évben nem találkoztam ilyennel...
Például: "Mutasd ki, hogy a CPU használat az idők kezdete óta hogyan simul ki!". Mivel mindenképp kisimul, amikor az AVG már 1000 sort átlagol, akkor egy nagy kiugrás sem mozdítja meg nagyon. Matematikailag ha egyenletes az előszlása a b mezőnek (0..100), akkor a SELECT 50-et fog mutatni és kisimul :)
Annyira felcsigáztál, hogy mondd már el, mi van a B mezőben? Árfolyam? CPU? HDD free? Óvodacsoport létszáma? Please!! :)
- A hozzászóláshoz be kell jelentkezni
Sportfogadási pénzmozgás adott bajnokságtípusra és stratégiára. :-) Így anélkül lehet tesztelni különféle stratégiákat, hogy rámenne a pénzem a sikertelen esetekre. Az látszik, hogy egyik bajnokság így, a másik úgy viselkedik. Talán a bunda miatt? Nem tudom. Akit érdekel, át tudom küldeni az adatokat.
- A hozzászóláshoz be kell jelentkezni
[Feliratkozás]
- A hozzászóláshoz be kell jelentkezni