寻找结束/开始日期
问题描述:
看这个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 |
+------------+-----------+
就如何有效地做到这一点任何想法?
感谢
答
如果你只是为每个学生最后一项记录后:
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'
听起来像功课。你能证明你到目前为止所尝试过的吗? – Abel 2009-11-27 00:58:58
其实它不是作业......我有几千条记录要分析。我只是简化了。我已经尝试过学生计数(*)组。这给出了最常见的班级人数,但我假设大多数人都去了所有班级。然后每个学生数(*)低于该值,错过了一些类。问题是......我怎么知道他们是放弃了还是开始了后者? – 2009-11-27 01:06:51
谢谢澄清。我相信你的意思是“按学生统计(*)组”(\ *没有反斜杠或不在反斜杠代码部分触发斜体)。 – Abel 2009-11-27 01:20:03