/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
[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

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408188
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste