|
| [mysql] summering af værdier i query Fra : Lars L. Christensen |
Dato : 14-05-05 19:04 |
|
davs i gruppen
Er det muligt at lave en query, hvor der laves averages på f.eks. 5 værdier
af gangen, således at istedet for at få 100 værdier, får man 20 værdier ud.
Eksempel:
1,2,3,4,5,6,7,8,9,10....99,100
bliver til:
avg(1,2,3,4,5),avg(6,7,8,9,10),.....,avg(96,97,98,99,100)
Min server er MySQL 4.0.23_Debian-3-log
mvh
Lars
| |
Nis Jorgensen (14-05-2005)
| Kommentar Fra : Nis Jorgensen |
Dato : 14-05-05 21:52 |
|
On 14 May 2005 20:04:20 +0200, "Lars L. Christensen"
<llc@dansketelecom.com> wrote:
>davs i gruppen
>
>Er det muligt at lave en query, hvor der laves averages på f.eks. 5 værdier
>af gangen, således at istedet for at få 100 værdier, får man 20 værdier ud.
>
>Eksempel:
>
>1,2,3,4,5,6,7,8,9,10....99,100
>
>bliver til:
>
>avg(1,2,3,4,5),avg(6,7,8,9,10),.....,avg(96,97,98,99,100)
Jeg ved ikke saerlig meget om hvad mysql 4 kan mht subselects. Men med
standard SQL kunne det se ud som nedenfor. Bemaerk at du er noedt til
at angive hvordan raekkerne skal sorteres - i dette tilfaelde har jeg
antaget at tabellen har en raekke "id" som der skal sorteres efter, og
en raekke "vaerdi" som der skal tages gennemsnit af.
SELECT avg(vaerdi)
FROM mintabel m1
GROUP BY (SELECT (COUNT(*) -1) \ 5 FROM mintabel m2 WHERE m2.id <=
m1.id)
\ skal vaere mysqls heltalsdivison. Maaske hedder den DIV, maaske
virker /
Kan mysql ikke lide subselects i group by, kan du proeve denne:
SELECT avg(vaerdi)
FROM (SELECT (count(*) - 1) \ 5 AS grp, m1.vaerdi
FROM mintabel m1, mintabelm2
where m2.id <= m1.id)
GROUP BY grp
--
Nis Jorgensen
Midlertidigt uden ae oe og aa. Jeg beklager
| |
Lars L. Christensen (15-05-2005)
| Kommentar Fra : Lars L. Christensen |
Dato : 15-05-05 17:16 |
|
Nis Jorgensen <nis@superlativ.dk> wrote in
news:e3nc81hlqcgni0s1hl8r6093dpjr86qu1r@4ax.com:
> On 14 May 2005 20:04:20 +0200, "Lars L. Christensen"
> <llc@dansketelecom.com> wrote:
>
>>davs i gruppen
>>
>>Er det muligt at lave en query, hvor der laves averages på f.eks. 5
>>værdier af gangen, således at istedet for at få 100 værdier, får man
>>20 værdier ud.
>>
>>Eksempel:
>>
>>1,2,3,4,5,6,7,8,9,10....99,100
>>
>>bliver til:
>>
>>avg(1,2,3,4,5),avg(6,7,8,9,10),.....,avg(96,97,98,99,100)
>
> Jeg ved ikke saerlig meget om hvad mysql 4 kan mht subselects. Men med
> standard SQL kunne det se ud som nedenfor. Bemaerk at du er noedt til
> at angive hvordan raekkerne skal sorteres - i dette tilfaelde har jeg
> antaget at tabellen har en raekke "id" som der skal sorteres efter, og
> en raekke "vaerdi" som der skal tages gennemsnit af.
>
>
>
> SELECT avg(vaerdi)
> FROM mintabel m1
> GROUP BY (SELECT (COUNT(*) -1) \ 5 FROM mintabel m2 WHERE m2.id <=
> m1.id)
>
> \ skal vaere mysqls heltalsdivison. Maaske hedder den DIV, maaske
> virker /
>
> Kan mysql ikke lide subselects i group by, kan du proeve denne:
>
> SELECT avg(vaerdi)
> FROM (SELECT (count(*) - 1) \ 5 AS grp, m1.vaerdi
> FROM mintabel m1, mintabelm2
> where m2.id <= m1.id)
> GROUP BY grp
>
>
SATANS! så understøtter min version af MySQL så ikke lige subqueries...
Må nok hellere se seriøst på at få den opgraderet til 4.1...
mvh
Lars
| |
|
|