寻找结束/开始日期

问题描述:

看这个MySQL表:寻找结束/开始日期

+------------+-----------+ 
| date_key | stude_key | 
+------------+-----------+ 
| 2005-09-01 | COM  | 
| 2005-09-02 | COM  | 
| 2005-09-06 | COM  | 
| 2005-09-07 | COM  | 
| 2005-09-08 | COM  | 
| 2005-09-09 | COM  | 
| 2005-09-12 | COM  | 
| 2005-09-01 | YUM  | 
| 2005-09-02 | YUM  | 
| 2005-09-06 | YUM  | 
| 2005-09-07 | YUM  | 
| 2005-09-08 | YUM  | 
| 2005-09-09 | YUM  | 
| 2005-09-12 | YUM  | 
| 2005-09-01 | DSA  | 
| 2005-09-02 | DSA  | 
| 2005-09-06 | DSA  | 
| 2005-09-07 | DSA  | 
| 2005-09-01 | JRA  | 
+------------+-----------+ 

它包含当一个类发生了,和学生出勤的天数。我想知道放弃的学生(停止上课)和什么时候。学生不能错过课程并返回。

例如,课程发生在2005年9月01日至12日。COM和YUM参加了所有课程,但DSA在2009-09-07放弃了,JRA只有1个课程。

我试图得到一个表:

+------------+-----------+ 
| gave_up | student | 
+------------+-----------+ 
| 2005-09-07 | DSA  | 
| 2005-09-01 | JRA  | 
+------------+-----------+ 

就如何有效地做到这一点任何想法?

感谢

+0

听起来像功课。你能证明你到目前为止所尝试过的吗? – Abel 2009-11-27 00:58:58

+0

其实它不是作业......我有几千条记录要分析。我只是简化了。我已经尝试过学生计数(*)组。这给出了最常见的班级人数,但我假设大多数人都去了所有班级。然后每个学生数(*)低于该值,错过了一些类。问题是......我怎么知道他们是放弃了还是开始了后者? – 2009-11-27 01:06:51

+0

谢谢澄清。我相信你的意思是“按学生统计(*)组”(\ *没有反斜杠或不在反斜杠代码部分触发斜体)。 – Abel 2009-11-27 01:20:03

如果你只是为每个学生最后一项记录后:

SELECT MAX(date_key) AS gave_up, student 
FROM [table_name] 
GROUP BY student 

SELECT MAX(date_key) AS gave_up, stude_key AS student 
FROM thetable 
GROUP BY stude_key 
HAVING MAX(date_key) != '2005-09-12'