2010-03-14 73 views
2

我有一個名爲event的事件表。爲了這個問題的目的,它只有一個字段date如何通過SUM限制結果

下面的查詢返回了我一個數字,在每個日期發生了未來14天內的事件:

SELECT 
    DATE_FORMAT(ev.date, '%Y-%m-%d') as short_date, 
    count(*) as date_count 
FROM event ev 
WHERE ev.date >= NOW() 
GROUP BY short_date 
ORDER BY ev.start_date ASC 
LIMIT 14 

結果可能如下:

+------------+------------+ 
| short_date | date_count | 
+------------+------------+ 
| 2010-03-14 |   1 | 
| 2010-03-15 |   2 | 
| 2010-03-16 |   9 | 
| 2010-03-17 |   8 | 
| 2010-03-18 |   11 | 
| 2010-03-19 |   14 | 
| 2010-03-20 |   13 | 
| 2010-03-21 |   7 | 
| 2010-03-22 |   2 | 
| 2010-03-23 |   3 | 
| 2010-03-24 |   3 | 
| 2010-03-25 |   6 | 
| 2010-03-26 |   23 | 
| 2010-03-27 |   14 | 
+------------+------------+ 
14 rows in set (0.06 sec) 

比方說,我想以日期來展示這些事件。同時我只想一次顯示最多10個。我將如何做到這一點?

不知怎的,我需要通過date_count字段的SUM來限制這個結果,但我不知道如何。

有人遇到過這個問題嗎?

任何幫助,將不勝感激。謝謝

被修改: 我在原來的帖子中忘記了額外的要求(關鍵的一個,哎呀)是我只想整天。 即。由於限制爲10,它只會返回以下行:

+------------+------------+ 
| short_date | date_count | 
+------------+------------+ 
| 2010-03-14 |   1 | 
| 2010-03-15 |   2 | 
| 2010-03-16 |   9 | 
+------------+------------+ 
+1

我覺得您的查詢不會做你期待什麼如果有一天沒有任何事件。 – 2010-03-14 11:02:02

+0

如果在某個特定日期沒有發生任何事件,那麼該日期行將不會出現,這對我的目的是可以的 – denormalizer 2010-03-14 11:10:30

+0

你是說,當你開始在14日添加date_count時,你將在16日停止,因爲1+ 2 + 9> = 10 – lexu 2010-03-14 12:32:08

回答

1

我覺得用LIMIT 0, 10會爲你工作。

+0

這太容易了! :)這讓我重新閱讀我的問題,並意識到我忽略了一個關鍵方面。對不起,Jacob和lexu讓我修改這個問題。 – denormalizer 2010-03-14 12:14:01

3
  1. 使用日期函數來限制日期的14天範圍
  2. 使用限制,以顯示前10

SELECT 
    DATE_FORMAT(ev.date, '%Y-%m-%d') as short_date, 
    count(*) as date_count 
FROM event ev 
WHERE ev.date between NOW() and date_add(now(), interval 14 day) 
GROUP BY date(short_date) 
ORDER BY ev.start_date ASC 
LIMIT 0,10 
+0

這太容易了! :)這讓我重新閱讀我的問題,並意識到我忽略了一個關鍵方面。對不起,雅各和勒緒讓我讚揚這個問題。 – denormalizer 2010-03-14 12:14:34