时间戳最小/最大不正确

时间:2013-06-13 17:45:46

标签: mysql database aggregate-functions

我有一份报告说我需要首先访问客户并进行客户的最新访问。我在mysql DATE_FORMAT函数上做了大量的转发,对使用该函数感到相当自信。但是我注意到一个我无法理解的异常现象。

我的报告:

    +-----------+-----------+------------+-------+---------------------+---------------------+
    | A-Number  | First     | Last       | Total | First Visit         | Latest Visit        |
    +-----------+-----------+------------+-------+---------------------+---------------------+
    | xxxxxxxxx | xxxxxxxx  | xxxxxxx    |     3 | Jun 04, 2013 - 3PM  | May 29, 2013 - 3PM  |
    | xxxxxxxxx | xxxxxxx   | xxxxxxxx   |     2 | May 15, 2013 - 12PM | May 28, 2013 - 9AM  |
    | xxxxxxxxx | xxxxxxx   | xxxxxxxxx  |     2 | Jun 03, 2013 - 1PM  | May 28, 2013 - 4PM  |
    | xxxxxxxxx | xxxxxx    | xxxxxx     |     1 | Apr 24, 2013 - 7PM  | Apr 24, 2013 - 7PM  |
    +-----------+-----------+------------+-------+---------------------+---------------------+

这是实际数据。我有大约1100多名学生目前使用这个系统,我需要报告他们什么时候进来,什么不进来。如果您注意到第一行是第一次访问是在06年6月?但最近的访问可能是29?

下一个问题是第二行(这是如何工作的)通知可能15 - >第一次访问,然后可能是第28次最新访问。 (这很好)。

月份名称中的不同关键字是否有问题?五月/六月?

我真的很困惑。

这是我的疑问:

        SELECT
            DATE_FORMAT(signintime, '%W %Y') Date,
            student.anum 'A-Number',
            student.first 'First',
            student.last 'Last',
            COUNT(session.anum) as Total,
            MIN(DATE_FORMAT(session.signintime, '%b %d, %Y - %l%p')) as 'First Visit',
            MAX(DATE_FORMAT(session.signintime, '%b %d, %Y - %l%p')) as 'Lastest Visit'
        FROM student
            INNER JOIN session
            ON session.anum = student.anum
        GROUP BY student.anum
        ORDER BY Total desc;

编辑1:

如piotrm指出的那样修复:

SELECT 
    student.anum 'A-Number', 
    student.first First, 
    student.last Last, 
    COUNT(session.anum) Total, 
    DATE_FORMAT(MIN(session.signintime), '%b %d, %Y - %l%p') 'First Visit',    
    DATE_FORMAT(MAX(session.signintime), '%b %d, %Y - %l%p') 'Latest Visit' 
FROM student 
    INNER JOIN session 
        ON session.anum = student.anum GROUP BY student.anum;

0 个答案:

没有答案