- - PR -
指定日付の直近のデータを絞り込みカウント
1
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-07-23 11:27
はじめまして
みなさまの知恵をお借りしたく 書き込みさせていただきます。 とても初歩的なSQLとなってしまうのかもしれませんが よろしくおねがいします。 以下のデータがあるとします
この場合に ある日時の、直近の点数が0点じゃない人数をカウントするには どのようにすればよいでしょうか。 たとえば、2007/01/26を指定した場合は結果として「2」 が帰ってくるといったかんじです。(AさんとDさんが該当) | ||||||||||||||||
|
投稿日時: 2007-07-23 12:32
で、使用しているDBMSは何?
表式(Inline View)が使用できるのなら、以下のように展開していくとできそう 1.まず、指定日直近のレコードを取得する
2.そのレコードに対して、点数が0でないレコードを取得するよう修正
3.最後に集計するよう修正
ただし一点問題があります。 どこまでがキーなのかが分からないことです。 上述したSQLは、名前と日時をキーとみなしました。 が、Aさんの2006/1/23日のレコードが複数件あるので破綻しています。 全列をキーとみなして、1.を行えばよさそうに見えますが、
となり、Aさんが複数件のまま取得されてしまい、おそらく最終的に3件となることでしょう。 | ||||||||||||||||
|
投稿日時: 2007-07-23 13:53
>かずくんさん
順をおってわかりやすく解説していただきありがとうございます。 DBMSはSybaseです ご指摘のとおり3のSQLでできました! Joinの使い方も少しわかりました。 >上述したSQLは、名前と日時をキーとみなしました。 >が、Aさんの2006/1/23日のレコードが複数件あるので破綻しています。 手入力したのでこちらはただの入力ミスです^^; いろいろ察していただき助かりました。 |
1