mysql - 如何使用 MySQL 获取通过和失败结果的最大日期?

标签 mysql sql select group-by greatest-n-per-group

我需要以下 SQL 查询:

:user_results

<表类=“s-表”> <标题> id cId uId tId 通过 日期 <正文> 1 23 34 2 是 2013年7月8日10:24:47 2 23 34 2 N 2014年11月27日10:36:32 3 23 34 3 是 2013年12月9日10:24:47 4 23 34 3 N 2014年11月27日10:39:10 5 23 34 4 是 2013年10月26日10:24:47 6 23 34 4 N 2014年11月27日10:38:08 7 59 93 2 是 2013年11月24日9:34:23 8 69 82 2 是 2014年11月28日9:04:22 9 69 82 2 是 2014年11月28日8:59:52 10 69 82 4 是 2014年11月28日8:59:52 11 69 82 4 是 2014年11月28日9:10:40 12 69 82 4 N 2014年11月28日9:12:01 13 72 72 2 N 2014年12月1日6:46:02 14 73 69 2 N 2014年12月1日6:49:29 15 73 69 3 N 2014年12月1日6:51:31 16 73 69 3 N 2014年12月1日7:11:25

下面是预期结果:

<表类=“s-表”> <标题> id cId uId tId 通过 日期 <正文> 1 23 34 2 是 2013年7月8日10:24:47 3 23 34 3 是 2013年12月9日10:24:47 5 23 34 4 是 2013年10月26日10:24:47 7 59 93 2 是 2013年11月24日9:34:23 9 69 82 2 是 2014年11月28日8:59:52 11 69 82 4 是 2014年11月28日9:10:40 13 72 72 2 N 2014年12月1日6:46:02 14 73 69 2 N 2014年12月1日6:49:29 16 73 69 3 N 2014年12月1日7:11:25

注意:如果用户通过了测试(尝试次数),需要显示最近的通过条目,如果用户未通过测试(尝试次数),需要显示最近的失败条目。

这是我的查询:

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/

相关文章:

sql - 一个表中的每一行的 PostgreSQL 连接另一个表中的所有行

java - Volley的JsonObjectRequest给出“org.json.JSONException:值<br类型java.lang.String的值不能转换为JSONObject”异常

mysql - 统计表中的项目,涉及的表字段枚举类型

SQL Server 2008 在生产环境中的表现?

sql - 在 Postgres 中按月检索活跃员工

sql - 是否可以将选择字段分配给 PostgreSQL 中的变量?

php - MySQL 使用 "in"条件检索重复结果

mysql - 这种 csv 加载的自动化甚至可能吗?

mysql - 是否可以从 MySQL 中的查询结果创建计算行?

mysql - 计算表中的组,但如果 2 组中的任何记录相同,则仅将其视为一个组