我需要以下 SQL 查询:
表:user_results
下面是预期结果:
注意:如果用户通过了测试(尝试次数),需要显示最近的通过条目,如果用户未通过测试(尝试次数),需要显示最近的失败条目。
这是我的查询:
SELECT *, COUNT(tId), MAX(date)
FROM user_results
WHERE DATE_ADD(date, INTERVAL 1 YEAR ) >= DATE_SUB( CURDATE(), INTERVAL 1 YEAR )
GROUP BY cId, tId
HAVING COUNT(tId) =1 OR (pass = 'Y' AND COUNT(tId) >=2)
最佳答案
请检查以下查询,
1)您必须在HAVING子句中添加失败的案例,并且将获得通过和失败的结果。
2)将pass和date列用“@”分隔符连接起来,得到的值是:Y@7/8/2013 10:24:47
3)用这个值排序,你会得到最近的通过和最近的失败。
SELECT *, COUNT(tId), MAX(date),
SUBSTRING_INDEX(MAX(CONCAT(pass, '@', date)), '@', -1) AS max_date,
SUBSTRING_INDEX(MAX(CONCAT(pass, '@', date)), '@', 1) AS pass_stat
FROM user_results
WHERE DATE_ADD(date, INTERVAL 1 YEAR ) >= DATE_SUB( CURDATE(), INTERVAL 1 YEAR )
GROUP BY cId, tId
HAVING COUNT(tId) =1 OR (pass = 'Y' AND COUNT(tId) >=2) OR (pass = 'N' AND COUNT(tId) >=2)
ORDER BY date DESC
关于mysql - 如何使用 MySQL 获取通过和失败结果的最大日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27244121/