• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:助けて>< 3つのテーブルで簡単な集計)

簡単なテーブルの集計方法

このQ&Aのポイント
  • 3つのテーブルから指定したユーザーの指定月のアクセス日時と売上げ金額を集計する方法を解説します。
  • SELECT文を使用して、ユーザー情報テーブル、アクセスログテーブル、売上げ金額テーブルを結合し、指定したユーザーの指定月のアクセス数と売上げ金額を取得します。
  • 集計結果の表は、id、username、date、access、salesの5つのカラムで構成されます。

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

  • ベストアンサー
  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.4

SELECT s.user_id AS id ,username ,a.ip ,a.`date` ,access ,sales FROM ( SELECT user_id ,ip ,COUNT(ip) AS access ,DATE(created_at) AS `date` FROM access_log WHERE YEAR(created_at)=2010 AND MONTH(created_at)=11 GROUP BY user_id, `date`, ip ) AS a LEFT JOIN ( SELECT user_id ,SUM(amount) AS sales ,DATE(created_at) AS `date` FROM sales WHERE YEAR(created_at)=2010 AND MONTH(created_at)=11 GROUP BY user_id, `date` ) AS s ON a.user_id=s.user_id AND a.`date`=s.`date` JOIN user AS u ON a.user_id=u.id view 作ってしまいたい気分だ。 何か引っかかるけどまぁいい。アクセスとセールスっておそらく一連の流れだから、まとめてしまってもいんじゃない。

その他の回答 (3)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

>10000円ですね で、よければたとえばこんな感じでいけます。 (元テーブルの正規化が微妙な気がしますが) select user.id , user.username, sub1.date , access , sales from( select user_id,date(created_at) as date ,count(*) as access from access_log group by user_id,date) as sub1 inner join ( select user_id,date(created_at) as date ,sum(amount) as sales from sales group by user_id,date ) as sub2 on sub1.user_id=sub2.user_id and sub1.date=sub2.date inner join user on user.username=sub1.user_id WHERE user.username = 'admin' AND sub1.date between '2010-11-01' AND '2010-11-30'

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

11/15の売り上げはなぜ20000円なのでしょう?

nichansaitama
質問者

お礼

間違えでした、10000円ですね^^;

  • t-ka
  • ベストアンサー率28% (14/50)
回答No.1

DATETIME型をCASTかCONVERT・・でDATE型もしくは文字列型などに適宜変換する。 (2010-11-13 21:56:54)を(2010-11-13)の様に 例えば CAST(created_at,DATE) AS aaa_time など       SELECT , , GROUP BY CAST( , ) AS ex1 FROM access_log       SELECT , , CAST( , ) AS ex2 FROM sales 結合する。 JOIN ・・・ ON access_log.ex1 = sales.ex2   

nichansaitama
質問者

お礼

省略されててよく分からないんですけど、1つのSQL文じゃ難しいんでしょうか? どうやって記述するんでしょうか? また、言い忘れましたがアクセスや売上げの無い日付も存在します。 対応できますでしょうか?

関連するQ&A