度々申し訳ありません、、
先ほどtimestamp型の日付から年月日を抜き出す方法を教えて頂き
SELECT
cast(time as date),
COUNT(distinct id)
FROM a
WHERE time > '2016-05-01'
Group by cast(time as date)
で年月日ごとのid数を出せたのですが
これに、bという売上テーブルとjoinさせたいのですが
うまくいきません。。
aは登録者のデータで
bは売上データです。
bは
SELECT
cast(time as date),
COUNT(distinct id) ,
Sum(price) as price
FROM b
WHERE time > '2016-05-01'
Group by cast(time as date)
ですると、日ごとの売上数字が合います。
これを登録者のデータとjoinさせ
SELECT
cast(t1.time as date),
COUNT(distinct t1.id)as UU ,
Sum(t1.price) as price,
COUNT(distinct t2.id)as 新規UU
FROM b t1 left join a t2 on t1.id= t2.id
and cast(t1.time as date)=cast(t2.time as date)
WHERE t1.time > '2016-05-01'
Group by cast(t1.time as date)
とすると、新規UU数に差異が出てしまいます。
(新規UUが少ない)
これはどのようにSQLを変更したらよろしいでしょうか、、
また
WHERE t1.time > '2016-05-01'
の箇所を、今日を含めない過去30日とするために
WHERE t1.time BETWEEN(curdate() - INTERVAL 30 DAY) AND (curdate() +INTERVAL 1 DAY)
とすると
syntax error at or near ”30”
というエラーが出てしまいます。
これの解消方法もご教示ください。。
【追記】
■aテーブルは、1行にログインしたidのデータが時間ごと入っている
→日単位でのログインid数を知りたい。
■bテーブルも1行に時間ごとの売上データがid別に入っている
→課金した人のid数と金額が知りたい
出したいのは日ごとの以下となります。
time price UU(課金した人数) 新規UU(ログインした人数)
2016-05-01 500 7 80
2016-05-02 700 2 40
回答1件
あなたの回答
tips
プレビュー