如何通过SUM限制结果

时间:2010-03-14 10:39:35

标签: sql mysql date sum limit

我有一个名为event的事件表。出于此问题的目的,它只有一个名为date的字段。

以下查询返回了接下来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 | 
+------------+------------+

2 个答案:

答案 0 :(得分:3)

  1. 使用日期功能限制14天的日期范围
  2. 使用限制显示前10个

  3. 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
    

答案 1 :(得分:1)

我认为使用LIMIT 0, 10会对你有用。