SQL文について - PHPプロ!Q&A掲示板

2498

  • 0P

SQL文について

質問日時 / 2010年2月4日 01:13    回答数 / 4件

Questioner:  otakopu  このエントリーをはてなブックマークに追加 

キーワード / mysql    sql   

PHP×MYSQL勉強中の初心者です。よろしくお願いします。

下記SQL文では、AVG(price)によってID別に過去全ての価格の平均値を取得できるのですが、過去10日間の平均値を出したい場合どうすべきでしょうか?

SELECT
  id
  ,date
  ,price
  ,AVG(price)
FROM
   tableA
GROUP BY
   id
ORDER BY
   date DESC
;

(MYSQL5.1)

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01slymanWHERE句でdateを絞り込みをすればOK ただ、MySQLだと
 ┗A01-1otakopuslyman様 返信有難うございます。 申し訳ありませ
  ┗A01-1-1slymanUNIXTIMEですか。 さすがに普段使ってないですがググ
   ┗A01-1-1-1otakopuslyman様 返信有難うございます。 FROM_UNIXTIME

回答一覧

並び替え:

A01
answererslyman [2月4日 08:49]

WHERE句でdateを絞り込みをすればOK
ただ、MySQLだとDATE型やDATETIME型だと日付の計算が煩雑になりますが。

あと、このSQLだとGROUP BY句になく、集計関数を使っていないid,priceをSELECT句に使っているので、
エラーになるかと思いますが正常に動いているのでしょうか?

dateがDATETIME型だと仮定するとこんな感じかと。

SELECT
  date
  ,AVG(price)
FROM
   tableA
WHERE
   date BETWEEN date_add(DATE_FORMAT(CURRENT_DATE,'%Y-%m-%d'), interval -10 day) AND DATE_FORMAT(CURRENT_DATE,'%Y-%m-%d')
GROUP BY
   id
ORDER BY
   date DESC
;

この意見に回答する

ツリーへ TOPへ

A01-1
replyerotakopu [2月4日 12:41]

slyman様 返信有難うございます。

申し訳ありません・・肝心なことを記載していませんでした。
dateはUNIXTIMEのINT型になります。

>>正常に動いているのでしょうか?
一応動いているのですが、文法的にはおかしいですよね。訂正しておきます。

この意見に回答する

ツリーへ TOPへ

A01-1-1
replyerslyman [2月4日 13:34]

UNIXTIMEですか。
さすがに普段使ってないですがググればFROM_UNIXTIMEという関数がHITします。
これでDATE型に変換して先ほど書いたWHERE句に組み込めばうまく動くんじゃないかと思います。

この意見に回答する

ツリーへ TOPへ

A01-1-1-1
replyerotakopu [2月4日 14:46]

slyman様 返信有難うございます。

FROM_UNIXTIMEを使うことでうまくいきました。
どうも有難うございました。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
動的なURLを静的に見せる方法
 このエントリーをはてなブックマークに追加 
A
普通に考えて、mod_rewrite でしょうね。 http://www.nishishi.com/blog/2006/01/mod_rewrite_url.html...

>>続きを読む

GETのままでは検索エンジンのロボットが拾ってくれなかったためにSEO対策として有効だと言われていますね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)