回答編集履歴
1
追加質問に対する回答を追記
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
|
```
|