teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追加質問に対する回答を追記

2021/12/23 01:25

投稿

neko_the_shadow
neko_the_shadow

スコア2395

answer CHANGED
@@ -20,4 +20,35 @@
20
20
  JOIN tbl AS T2 ON T1.userid = T2.userid AND T1.PC購入日 < T2.購入日
21
21
  WHERE T2.購入端末 = 'SP'
22
22
  GROUP BY T1.PC購入日
23
+ ```
24
+ ---
25
+
26
+ **2021/12/23 10:20 追記**
27
+
28
+ > 「その日に使われたPC経由の注文数」
29
+ > 「列の12月1日〜12月7日」
30
+ > をいれる方法はありますでしょうか?
31
+
32
+ やり方はいろいろあると思いますが、たとえば以下のようなSQLはどうでしょうか?
33
+
34
+ ```SQL
35
+ SELECT
36
+ T1.PC購入日,
37
+ (SELECT COUNT(*) FROM tbl T3 WHERE T1.PC購入日 = T3.購入日 AND 購入端末 = 'PC') AS PC購入数,
38
+ COUNT(CASE WHEN T2.購入日 = '2021-12-01' THEN T1.userid END) AS "2021-12-01",
39
+ COUNT(CASE WHEN T2.購入日 = '2021-12-02' THEN T1.userid END) AS "2021-12-02",
40
+ COUNT(CASE WHEN T2.購入日 = '2021-12-03' THEN T1.userid END) AS "2021-12-03",
41
+ COUNT(CASE WHEN T2.購入日 = '2021-12-04' THEN T1.userid END) AS "2021-12-04",
42
+ COUNT(CASE WHEN T2.購入日 = '2021-12-05' THEN T1.userid END) AS "2021-12-05",
43
+ COUNT(CASE WHEN T2.購入日 = '2021-12-06' THEN T1.userid END) AS "2021-12-06",
44
+ COUNT(CASE WHEN T2.購入日 = '2021-12-07' THEN T1.userid END) AS "2021-12-07"
45
+ FROM (
46
+ SELECT userid, MIN(購入日) AS PC購入日
47
+ FROM tbl
48
+ WHERE 購入端末 = 'PC'
49
+ GROUP BY userid
50
+ ) AS T1
51
+ JOIN tbl AS T2 ON T1.userid = T2.userid AND T1.PC購入日 < T2.購入日
52
+ WHERE T2.購入端末 = 'SP'
53
+ GROUP BY T1.PC購入日
23
54
  ```