• ベストアンサー

SQL文について質問があります。

PostgreSQLのSQL文で質問があります。 kekktaテーブルの構成 ---------------------- name:varchar(64) score : int 4 day : date ---------------------- 現在kekkaテーブルには以下のレコードが格納されています。 ------------------------------- yamada| -2|2003-04-30 yamada|-16|2003-05-01 yamada| 3|2003-05-02 yamada|-23|2003-05-02 honda |-12|2003-05-10 yamada| 12|2003-05-15 yamada| -6|2003-05-20 yamada| -8|2003-06-01 ------------------------------- このレコードで 2003年5月のyamadaさんのレコードの最新日付からの scoreの合計を取得したいと考えています。 ---------------------------------- select name, sum(score) from kekka where name='yamada' and day like '2003-05%' group by name offset 0 limit 4; (このSQLはもちろんうまくいきません) ---------------------------------- <出力したい結果> name | sum(score) --------------------- yamada | -14 です。 SQLがうまくできません。 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kj_
  • ベストアンサー率39% (9/23)
回答No.1

単純に、文字型に変更してみました。 おまけで、文字を日付型にするのもいいかも。 TO_CHAR ← 文字型へ 今回はこれで文字へ TO_DATE ← 日付型へ 日付の条件ならこっちもいいかも -------X8 きりとり 8X------- select name ,sum(score) from kekka where name='yamada' -- and day like '2003-05%' --コメント and to_char(day,'yyyymm') = '200305' group by name

TOKIO2003
質問者

お礼

回答ありがとうございます。 なるほどなるほどです。 ありがとうございました。

その他の回答 (1)

  • junijuni
  • ベストアンサー率25% (12/48)
回答No.2

SELECT NAME, SUM(SCORE) FROM KEKKA WHERE NAME='yamada' AND DAY >= TO_DATE('2003/05/01','YYYY/MM/dd') AND DAY <= TO_DATE('2003/05/31','YYYY/MM/dd') GROUP BY NAME でもOKですね、多分…

TOKIO2003
質問者

お礼

早速の回答ありがとうございます。 like でないんですね。 これもまたなるほどです。 ありがとうございました。 下記の方と両方ためします。

関連するQ&A