webForumDet fria alternativet

Summera maxvärdet i en GROUP by

Databaser & SQL

1 svar · 174 visningar · startad av cyprys

Medlem sedan dec. 20003 563 inlägg
Frågan#1

Ritar upp en tabellstruktur och förklarar nedan.

-- AuctionObjects --
Id Counter | AuctionID Int

-- Bidding --
AuctionObjectID Int | Bid Int

Det har milt utalat slagit slint i tankeverksamheten just nu.

Tabellen bidding kan ha oändligt många poster med samma Bidding.AuctionObjectID, men bara det högsta skall användas för uträkningen.
Antalet olika Bidding.AuctionObjectID kan också variera per AuctionObjects.Id, dessa två är då kopplade till varrandra.

ex.
-- AuctionObjects --
10 | 4
11 | 4
12 | 4
13 | 5 <- skall exkluderas

-- Bidding --
10 | 300000
10 | 310000
10 | 320000
12 | 2000
11 | 20400 <- räknas 
10 | 400000 <- räknas (maxbelopp per ID)
12 | 2500  <- räknas

Summan skall bli 422900 då och det enda frågan skall kasta ifrån sig.

Anledningen att det kan vara svårtydligt är att jag inte kommer på vilket håll man egentligen skall börja räkna ifrån.. Men visst är detta möjligt med en fråga?

Medlem sedan juli 2002145 inlägg
#2

Håller det här tro? Jag har inte hårdtestat... Det förutsätter att man inte har flera bud som är lika och max per auktion (om du förstår hur jag menar :p )

select sum(bid)
from bidding b
where bid in (
select max(bid) from bidding
where b.auctionobjectid = auctionobjectid
group by auctionobjectid)
3740 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
2763 ms — deklarationer (db)
0 ms — hämta statistik (cache)
963 ms — hämta tråd, inlägg och bilagor (db)
2760 ms — ändringar (db)