带sql max函数的查询

yftpprvb  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(300)

具有4条记录的表视图
如果我想选择第2条和第3条记录,下面的查询是否有效?

select driver_name, driver_city, driver_email, max(due_date), max(completion_date)
from TableX
group by driver_name,driver_city,driver_email
2vuwiymt

2vuwiymt1#

由于日期值的格式不好,您需要首先将值转换为日期,然后应用其他逻辑。现在请检查我的更新脚本-
问题:
完成日期列中的值是字符串。结果,max返回的是字符串,而不是日期。
“完成日期”列中没有年份值。因此,我只是在值中添加了'2020',以便正确生成日期值。最后,增加的年份对产量没有影响。这是考虑到所有的DTAE是从单一的(任何)年只。
但如果在其他列中有年份值,请避免添加静态“2020”,并使用该列中的值
在此处查看演示

SELECT A.*
FROM TableX A
INNER JOIN (
    SELECT driver_email, 
    MAX(STR_TO_DATE(
        CONCAT(
        REPLACE(
            REPLACE(REPLACE(completion_date,'rd ','-'),
            'st ',
            '-'
        ),
        'th ',
        '-'
    ),'-2020') ,'%d-%b-%Y')) completion_date
    FROM TableX 
    GROUP BY driver_email
) B ON A.driver_email = B.driver_email
AND STR_TO_DATE(
        CONCAT(
        REPLACE(
            REPLACE(REPLACE(A.completion_date,'rd ','-'),
            'st ',
            '-'
        ),
        'th ',
        '-'
    ),'-2020') ,'%d-%b-%Y') = B.completion_date
g52tjvyc

g52tjvyc2#

它将返回第2和第4条记录作为结果。因为第三条记录在duedate列中有空值

相关问题