アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在、自作でアクセス解析を作成しております。
グラフ等の表示で必要なレコードの取得についてどうしてもわかりません。
ご教授頂ければと思います。

===========================================
■レコード一覧
===========================================
id date   page_id session_key device
1 2016-1-1  1 1 pc
2 2016-1-1  2 1 pc
3 2016-1-1  1 2 smart
4 2016-1-1  2 2 smart
5 2016-1-1  1 3 pc
6 2016-1-1  2 3 pc
7 2016-1-2  1 3 pc
8 2016-1-2  1 4 smart
9 2016-1-3   1 5 pc
===========================================

日付ごとにアクセスした人数(uniqu数)取得したいです。(表示上デバイス毎)
DISTINCTを使えば重複を取り除けるのでしょうが、どこにどういれれば良いかわかりません。
現状のsqlを記載します。この結果からsession_keyを取り除く為にはどのようなsqlにすればよいか。

SELECT `date` ,
COUNT(CASE WHEN device = 'pc' THEN 1 ELSE NULL END ) AS `pc` ,
COUNT(CASE WHEN device = 'smart' THEN 1 ELSE NULL END ) AS `smart`
FROM `access_records`
WHERE `date` >= '2016-01-01 00:00:00' AND `date` <= '2016-01-03 23:59:59'
GROUP `date`
ORDER `date` ASC

===========================================
■現状の結果
===========================================
date   pc smart
2016-1-1   4 2
2016-1-2   1 1
2016-1-3   1 0
===========================================

===========================================
■取得したい結果
===========================================
date   pc smart
2016-1-1   2 1
2016-1-2   1 1
2016-1-3   1 0
===========================================

A 回答 (1件)

page_idごとにユニークなdeviceをカウントしたいのですよね?


いろいろやりようもあるとおもいますが、とりあえずこんな感じ?

select `date`,sum(device='pc') as pc,sum(device='smart') as smart
from (
select distinct `date`,`device`,`page_id` from access_recode
where `date` between '2016-01-01' and '2016-01-03'
) as sub
group by `date`
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す