带sql max函数的查询

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

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

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

2vuwiymt1#

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

  1. SELECT A.*
  2. FROM TableX A
  3. INNER JOIN (
  4. SELECT driver_email,
  5. MAX(STR_TO_DATE(
  6. CONCAT(
  7. REPLACE(
  8. REPLACE(REPLACE(completion_date,'rd ','-'),
  9. 'st ',
  10. '-'
  11. ),
  12. 'th ',
  13. '-'
  14. ),'-2020') ,'%d-%b-%Y')) completion_date
  15. FROM TableX
  16. GROUP BY driver_email
  17. ) B ON A.driver_email = B.driver_email
  18. AND STR_TO_DATE(
  19. CONCAT(
  20. REPLACE(
  21. REPLACE(REPLACE(A.completion_date,'rd ','-'),
  22. 'st ',
  23. '-'
  24. ),
  25. 'th ',
  26. '-'
  27. ),'-2020') ,'%d-%b-%Y') = B.completion_date
展开查看全部
g52tjvyc

g52tjvyc2#

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

相关问题