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

回答編集履歴

3

チョウセイ

2019/06/11 07:20

投稿

yambejp
yambejp

スコア117888

answer CHANGED
@@ -26,10 +26,11 @@
26
26
  (10004,'2019-07-10','田中','CCCCCサンプル'),
27
27
  (10004,'2019-07-10','田中','EEEEEサンプル'),
28
28
  (10004,'2019-07-10','田中','GGGGGGG'),
29
+ (10005,'2019-07-10','吉田','HHHHサンプル'),
29
30
  (10011,'2019-05-11','鈴木','XXXXXX'),
30
31
  (10012,'2019-06-05','佐藤','YYYYYサンプル');
31
32
  ```
32
- - 初回にサンプルを買
33
+ - 初回にサンプルを買った
33
34
  ```SQL
34
35
  select * from (
35
36
  select 売上ID,名前,sum(case when 商品名 LIKE '%サンプル%' then 1 else 0 end) as flg
@@ -43,4 +44,24 @@
43
44
  having 名前=t1.名前 and 売上ID<t1.売上ID
44
45
  )
45
46
  and flg>0
46
- ```
47
+ ```
48
+ - 初回に現品を買った人
49
+ ```SQL
50
+ select * from (
51
+ select 売上ID,名前,sum(case when NOT 商品名 LIKE '%サンプル%' then 1 else 0 end) as flg
52
+ from tbl
53
+ group by 売上ID,名前
54
+ ) as t1
55
+ where not exists(
56
+ select 売上ID,名前,sum(case when NOT 商品名 LIKE '%サンプル%' then 1 else 0 end) as flg
57
+ from tbl
58
+ group by 売上ID,名前
59
+ having 名前=t1.名前 and 売上ID<t1.売上ID
60
+ )
61
+ and flg>0
62
+
63
+ ```
64
+
65
+ - サンプルから現品に至る人
66
+
67
+ ちょっと意味がわからない

2

chousei

2019/06/11 07:20

投稿

yambejp
yambejp

スコア117888

answer CHANGED
@@ -11,4 +11,36 @@
11
11
 
12
12
  で、書き方がかわってきます
13
13
  もしちゃんと管理したいなら、サンプルカラムをつくってそのon/offで
14
- きちんとサンプルかどうか判別できるようにしたほうが効率的です
14
+ きちんとサンプルかどうか判別できるようにしたほうが効率的です
15
+
16
+ # sample
17
+ アクセスと書式が違ったらうまく読み替えてください
18
+ ```SQL
19
+ create table tbl(pid int primary key auto_increment,売上ID int,受注日 date,名前 varchar(20),商品名 varchar(30));
20
+ insert into tbl(売上ID,受注日,名前,商品名) values
21
+ (10001,'2019-05-01','鈴木','AAAAAサンプル'),
22
+ (10001,'2019-05-01','鈴木','BBBBBBB'),
23
+ (10002,'2019-05-05','佐藤','DDDDDDD'),
24
+ (10003,'2019-06-12','井上','DDDDDDD'),
25
+ (10003,'2019-06-12','井上','EEEEEサンプル'),
26
+ (10004,'2019-07-10','田中','CCCCCサンプル'),
27
+ (10004,'2019-07-10','田中','EEEEEサンプル'),
28
+ (10004,'2019-07-10','田中','GGGGGGG'),
29
+ (10011,'2019-05-11','鈴木','XXXXXX'),
30
+ (10012,'2019-06-05','佐藤','YYYYYサンプル');
31
+ ```
32
+ - 初回にサンプルを買う人
33
+ ```SQL
34
+ select * from (
35
+ select 売上ID,名前,sum(case when 商品名 LIKE '%サンプル%' then 1 else 0 end) as flg
36
+ from tbl
37
+ group by 売上ID,名前
38
+ ) as t1
39
+ where not exists(
40
+ select 売上ID,名前,sum(case when 商品名 LIKE '%サンプル%' then 1 else 0 end) as flg
41
+ from tbl
42
+ group by 売上ID,名前
43
+ having 名前=t1.名前 and 売上ID<t1.売上ID
44
+ )
45
+ and flg>0
46
+ ```

1

chousei

2019/06/11 07:16

投稿

yambejp
yambejp

スコア117888

answer CHANGED
@@ -9,4 +9,6 @@
9
9
  - 商品名の「サンプル」という文字も末尾にしかつかないのか
10
10
  - 先頭や途中にもつくのか
11
11
 
12
- で、書き方がかわってきます
12
+ で、書き方がかわってきます
13
+ もしちゃんと管理したいなら、サンプルカラムをつくってそのon/offで
14
+ きちんとサンプルかどうか判別できるようにしたほうが効率的です