2013-05-05 42 views
0

所以我下面的查詢..MySQL:如何獲得總和列的最大值?

select rooms.id room_id, rooms.cnt, booked_dates.cnt, sum(booked_dates.cnt) 
from rooms 
LEFT JOIN booked_dates 
     on rooms.id = booked_dates.rid and 
      (booked_dates.start between '2013-05-06' and '2013-05-09') 
where rooms.ht = 4 and rooms.id = 138 
group by booked_dates.start 

返回以下結果..

enter image description here

現在我需要將它們分組結果由room_id並獲得在該maxsum(booked_dates.cnt)列。因此,對於例如將是:

138 | 20 | 4 | 12

我將如何做到這一點?謝謝。

+0

我在列列表中看到一些非聚合字段......你確定這是你的意思嗎?也許我只是不明白那些'cnt'列表示。 – fenway 2013-05-05 19:35:27

回答

1
SELECT rooms.id room_id, rooms.cnt, booked_dates.cnt, SUM(booked_dates.cnt) AS booked_sum 
FROM rooms 
LEFT JOIN 
     booked_dates 
ON  rooms.id = booked_dates.rid 
     AND (booked_dates.start between '2013-05-06' and '2013-05-09') 
WHERE rooms.ht = 4 
     AND rooms.id = 138 
GROUP BY 
     booked_dates.start 
ORDER BY 
     booked_sum DESC 
LIMIT 1 
+0

公平足夠沒有想到訂購它大聲笑 – 2013-05-05 20:05:12

0

添加MAX()柱:

select 
    rooms.id room_id, 
    rooms.cnt, 
    booked_dates.cnt, 
    max(booked_dates.cnt) as max , 
    sum(booked_dates.cnt) as sum 
from rooms 
LEFT JOIN booked_dates 
    on rooms.id = booked_dates.rid and 
     (booked_dates.start between '2013-05-06' and '2013-05-09') 
where rooms.ht = 4 and rooms.id = 138 
group by 1, 2, 3 

你有你的組中的錯誤的條款 - 該查詢修復了太(請注意,您可以參考列由他們位置,而不是他們的表達,按分組劃分)。

+0

不知道這將如何工作 – 2013-05-05 20:06:12

+0

複製 - 通過它並嘗試它,那麼你會看到它是如何工作 – Bohemian 2013-05-05 20:32:36