Avatar billede gnuen_fra Nybegynder
23. august 2005 - 10:42 Der er 30 kommentarer og
1 løsning

laveste og højeste indhold

Jeg har en tabel. I den tabel har jeg en række med point.

Hvordan kan man finde ud af hvad den summen af de lavest værdier er samt summen af de højeste?

indtil videre har jeg følgende kode som giver de rigtige resultater men ikke summen af de laveste værdier.
På forhånd tak for hjælpen.

Set rs1 = Server.CreateObject("ADODB.Recordset")
rs1.Open "SELECT * FROM tabel ORDER BY point", database

If rs1.eof AND rs1.bof Then

else

rs1.MoveFirst
   
    pointStr = rs1("point")

    DO UNTIL rs1.eof

        if pointStr <> rs1("point") Then
           
            resultat = pointStr * counter
                       
            response.write (resultat&", ")
           
            counter = 0
           
        end if
       
        counter = counter + 1
   
        pointStr = rs1("point")

        rs1.MoveNext
    loop
end if
Avatar billede busschou Praktikant
23. august 2005 - 10:51 #1
summen af de højeste og laveste værdier?
Hvordan definerer du hvad de højeste og laveste er?
Det her tager summen af alle
Select Sum(point) From tabel
Du kan også finde maks og min som
Select Max(point) From tabel og Select Min(point) From tabel
Hvis de højeste er defineret som dem der er over halvdelen af max kunne du således finde de to summer som
Select Sum(point) From tabel where point >= Max(point)/2
og
Select Sum(point) From tabel where point < Max(point)/2
Avatar billede fennec Nybegynder
23. august 2005 - 10:51 #2
Hvordan definere du hvad der er de højest og lavest værdier?? Er der kun to forskellige værdier, eller hvad er skillelinjen??
Avatar billede fennec Nybegynder
23. august 2005 - 10:52 #3
busschou >>
Du var heller ikke helt med på ? hvad :o)
Avatar billede softspot Forsker
23. august 2005 - 10:52 #4
Mon ikke det kan klares i databasen...?

SELECT sum(point) as sumPoint
FROM tabel
WHERE point = MAX(point) OR point = MIN(Point)

Jeg har ikke testet det, men det kan være du har lyst... :)
Avatar billede busschou Praktikant
23. august 2005 - 10:52 #5
nej ikke specielt
og i eksemplet ligner det at du ganger den højeste med nul og den næsthøjeste med en og den tredie højeste med to osv...forstår det ikke helt
Avatar billede gnuen_fra Nybegynder
23. august 2005 - 10:58 #6
okay måske var jeg ikke helt klar.

jeg skal bruge den højeste værdi af de mindste tal i rækken
og den største værdi af de højeste tal i rækken
Avatar billede gnuen_fra Nybegynder
23. august 2005 - 11:00 #7
tallene skal altså lægges sammen.

i mit eksempel ganger jeg antallet værdierne med antallet af gange løkken er kørt igennem
Avatar billede busschou Praktikant
23. august 2005 - 11:03 #8
den højeste værdi af de mindste??
her er ti værdier
0 1 2 3 4 5 6 7 8 9
hvad er den højeste værdi af de mindste?
Avatar billede busschou Praktikant
23. august 2005 - 11:04 #9
den største værdi er bare Max(point)
Avatar billede fennec Nybegynder
23. august 2005 - 11:04 #10
Jeg tror du skal give os noget data fra din database, også fortælle os hvilket resultat du ønsker...
Avatar billede gnuen_fra Nybegynder
23. august 2005 - 11:13 #11
okay... rækken point kan indholde alle tal.
i dette tilfælde har jeg 15*10, 15*20 og 15*30

summen af de højeste tal er altså 450
og summen af de laveste tal er 150
Avatar billede gnuen_fra Nybegynder
23. august 2005 - 11:16 #12
For at være helt præcis skal jeg bruge det største og det mindste antal point man kan få.
Avatar billede busschou Praktikant
23. august 2005 - 11:20 #13
ok når man ganger hedder det ikke summen men produktet ;o)
Skal det forståes som om du har 15 rækker med point og du vil gange antallet med det største og det mindste point?
Avatar billede busschou Praktikant
23. august 2005 - 11:20 #14
eller skal det forståes som om der er 15 der har fået den højeste point og 15 der har fået den laveste?
Avatar billede busschou Praktikant
23. august 2005 - 11:22 #15
Select Count(Max(point)) From tabel
Select Count(Min(point)) From tabel
De vil give dig det antal det største point forekommer og det antal gange det mindste point forekommer
Dernæst er det så blot at gange dette tal med henholdsvis det største og mindste point
Avatar billede fennec Nybegynder
23. august 2005 - 11:24 #16
Det kan vel smides i den samme select:
Select Count(Max(point))*Max(point) From tabel
Avatar billede gnuen_fra Nybegynder
23. august 2005 - 11:26 #17
jeg har variabelt antal rækker og variablet antal point.
I dette tilfælde har jeg 45 rækker ialt. 15 af rækkerne har 10point, 15 har 20 point og 15 har 30 point.

resultatet skal være det lavest og højest mulige antal point
Avatar billede softspot Forsker
23. august 2005 - 11:26 #18
busschou >> hvis man har 15 rækker med point-værdien 10, så er det vel det samme som at gange med 15, men det er vel stadig summering hvis man lægger dem samme 2 ad gangen... 2+2+2+2 = 2*4 = 8 :)
Avatar billede gnuen_fra Nybegynder
23. august 2005 - 11:27 #19
prøver jeres forslag...
Avatar billede busschou Praktikant
23. august 2005 - 11:30 #20
ok så vil jeg næsten tro du kan gøre som jeg og fennec siger til sidst
Men men
Hvis du mener højest og lavest muligt
Så er 30*20 jo større end 10*30
Så vil du skulle bruge noget ala
select max(pointSum) from (Select Count(point)*point as pointSum From tabel group by point)
og tilsvarende med min
Avatar billede gnuen_fra Nybegynder
23. august 2005 - 11:31 #21
min sql ser nu således ud:
rs1.Open "Select Count(Max(point))*Max(point) FROM tabel", database

jeg får følgende fejl:
En aggregatfunktion kan ikke bruges i udtrykket (Count(Max(point))*Max(point)).

hvad skal det sige?
Avatar billede softspot Forsker
23. august 2005 - 11:31 #22
Prøv med:

rs1.Open "Select Count(point)*Max(point) FROM tabel", database
Avatar billede gnuen_fra Nybegynder
23. august 2005 - 11:40 #23
jeg kan se mening med at bruge busschou's sql:
select max(pointSum) from (Select Count(point)*point as pointSum From tabel group by point)

jeg får bare følgende fejl:
Elementet kan ikke findes i den samling, der svarer til det anmodede navn eller ordenstal.
Avatar billede busschou Praktikant
23. august 2005 - 11:47 #24
det ligner at det er en fejl når du skriver ud
Den får man normalt hvis du laver rs("bingo") hvis der ikke findes et felt "bingo"
Avatar billede gnuen_fra Nybegynder
23. august 2005 - 12:05 #25
Hvis jeg ikke kan skrive resultatet ud med: rs1 ("point") hvordan kan jeg så?
Avatar billede fennec Nybegynder
23. august 2005 - 12:18 #26
rs1(0)
Avatar billede gnuen_fra Nybegynder
23. august 2005 - 12:21 #27
mange tak for hjælpen!!!

smid et svar og få nogle point!
Avatar billede fennec Nybegynder
23. august 2005 - 12:32 #28
Det må vel være dig busschou der skal have point :o)
Avatar billede busschou Praktikant
23. august 2005 - 13:14 #29
jamen så vil jeg lægge et svar
iøvrig er det kun fordi du ikke har et felt "point" for det har vi jo kaldt "pointSum" :o)
Så om du benytter rs1(0) eller rs1("pointSum") burde være et fedt :o)
Avatar billede gnuen_fra Nybegynder
23. august 2005 - 14:24 #30
jeg prøvede med rs1("pointSum"), det virkede ikke...  :oS

men tak for hjælpen endnu en gang
Avatar billede kjulius Novice
23. august 2005 - 23:04 #31
Bare rolig, jeg ved du har givet dine point, og busschou har fortjent dem :-)
Men jeg kan alligevel ikke lade være med (lidt sent) at give mit besyv med.

Var det ikke nemmest at lade SQL gøre hele arbejdet? Jeg ved ikke hvilken database du benytter, men hvis du bruger Access kan du f.eks. bruge en SQL som denne:

SELECT 'Bedste 3' AS bd, sum(Point) AS PointIalt
FROM [SELECT TOP 3 * FROM Tabel ORDER BY Id DESC]. AS tmp
GROUP BY 'Bedste 3'
UNION SELECT 'Dårligste 3' AS bd, sum(Point) AS PointIalt
FROM [SELECT TOP 3 * FROM Tabel ORDER BY Id]. AS tmp
GROUP BY 'Dårligste 3'

Hvis du bruger SQL server bruges der vist alm. paranteser i stedet for [

SELECT 'Bedste 3' AS bd, sum(Point) AS PointIalt
FROM (SELECT TOP 3 * FROM Tabel ORDER BY Id DESC) AS tmp
GROUP BY 'Bedste 3'
UNION SELECT 'Dårligste 3' AS bd, sum(Point) AS PointIalt
FROM (SELECT TOP 3 * FROM Tabel ORDER BY Id) AS tmp
GROUP BY 'Dårligste 3'

MySQL forstår vist ikke TOP instruktionen, men bruger LIMIT i stedet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester