按不同日期选择数据组,并获取组中的第一个和最后一个数据

时间:2014-12-19 06:35:23

标签: mysql sql date select aggregate-functions

我不确定这是否可行,我有一个带时间戳的数据表

e.g。

apple    2013-01-02 06:24:22
banana    2013-01-12 11:08:22
apple    2013-01-02 15:24:22
apple    2013-01-02 12:30:16
banana    2013-01-14 18:34:22

我想:

  1. 在不同的日期重新排列数据库而不是timetamp,意味着所有相同的日期将组合在一起
  2. 如果可能,我希望在最终结果中实现以下目标

    apple     2013-01-02 06:24:22  2013-01-02 15:24:22  // get first and last data
    banana    2013-01-12 11:08:22  2013-01-12 11:08:22  // only one data in the group
    banana    2013-01-14 18:34:22  2013-01-14 18:34:22  // only one data in the group
    
  3. 如何使用最少的sql查询而不是使用循环来确定?

3 个答案:

答案 0 :(得分:0)

试试这个:

SELECT fruitName, MIN(a.timestamp), MAX(a.timestamp)
FROM tableA a 
GROUP BY DATE(a.timestamp), fruitName;

答案 1 :(得分:0)

使用MySQL DATE()功能。

SELECT FRUIT_NAME, DATE(mydate) AS dateStamp FROM TABLE 
GROUP BY DATE(TABLE.mydate);

其中:

FRUIT_NAME:您的姓名字段

模仿您的日期字段。

答案 2 :(得分:0)

此查询可以满足您的需求。 (问题的第二部分)

SELECT Fruit, Min(DateTime) AS FirstDateTime, Max(DateTime) AS LastDateTime FROM Table1 
GROUP BY DATE(DateTime);

这会给你输出

FRUIT      FIRSTDATETIME           LASTDATETTIME
apple     2013-01-02 06:24:22  2013-01-02 15:24:22
banana    2013-01-12 11:08:22  2013-01-12 11:08:22 
banana    2013-01-14 18:34:22  2013-01-14 18:34:22