アプリ版:「スタンプのみでお礼する」機能のリリースについて

ID名前日付点数合格日
-------------------------------------------------------------------

1太郎2007/4/180合格
2太郎2007/4/290合格
3太郎2007/4/3100合格
4花子2007/4/520不合格
5太郎2007/4/530不合格
6花子2007/4/6100合格
7太郎2007/4/740不合格
8花子2007/4/7100合格

上のようなテーブルから、太郎と花子が最初に合格した日の情報を
取得するようなSELECT文は可能でしょうか?
結果として望むのは以下になります。

ID名前日付点数合格日
---------------------------------------------------------------------
1太郎2007/4/180合格
6花子2007/4/6100合格

どなたかご教授願います。

A 回答 (4件)

列[合格日]を[結果]と変更していますが・・・。



SELECT 名前, MIN(日付) AS 初合格日 FROM 試験履歴 WHERE 結果=1 GROUP BY 名前;

花子, 2007/04/06
太郎, 2007/04/01

SELECT A.* FROM 試験履歴 AS A,
(SELECT 名前, MIN(日付) AS 初合格日 FROM 試験履歴 WHERE 結果=1 GROUP BY 名前) AS B
WHERE A.名前=B.名前 AND A.日付=B.初合格日 ORDER BY A.ID;

1, 太郎, 2007/04/01, _80, Yes
6, 花子, 2007/04/06, 100, Yes

いずれにしろ、同姓同名問題は残ります。
受験者の一意に特定する列が無いので仕方ないかと思います。

この回答への補足

回答して頂いた内容で、
希望通りの結果を出すことが出来ました。
本当にありがとうございました。

補足日時:2007/04/18 10:55
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2007/04/18 10:54

ANo.2は無視してください。

点数を考慮していませんでした。

ANo.1のSQLの最後に
and 合格日 = '合格';
がいるような?
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2007/04/18 10:54

select 名前,min(日付) from 試験


where 合格日='合格'
group by 名前;
では?
    • good
    • 0

このような感じで如何でしょうか。

(テーブル名は勝手に”試験”としました。)

SELECT * FROM 試験 A
WHERE 日付 = (SELECT MIN(日付) FROM 試験 B WHERE A.名前 = B.名前 AND 合格日 = '合格')

ただし、同じ日に同じ名前の人が合格していると結果に同じ人が2行出てきますが。もしこれが問題でしたらもう一工夫必要ですね。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2007/04/18 10:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!