- ベストアンサー
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がうまくできません。 宜しくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
単純に、文字型に変更してみました。 おまけで、文字を日付型にするのもいいかも。 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
その他の回答 (1)
- junijuni
- ベストアンサー率25% (12/48)
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ですね、多分…
お礼
早速の回答ありがとうございます。 like でないんですね。 これもまたなるほどです。 ありがとうございました。 下記の方と両方ためします。
お礼
回答ありがとうございます。 なるほどなるほどです。 ありがとうございました。