回答編集履歴

2

調整

2023/09/25 09:09

投稿

yambejp
yambejp

スコア117667

test CHANGED
@@ -52,3 +52,18 @@
52
52
  group by c1,c2,c3,c4,c5
53
53
  having count(*)=1
54
54
  ```
55
+
56
+ # 別解釈
57
+ こういうことかも
58
+ ```SQL
59
+ select sum(c6) as sum_c6 from tbl as t1
60
+ where not exists(
61
+ select 1 from tbl where 1
62
+ and id<>t1.id
63
+ and c1=t1.c1
64
+ and c2=t1.c2
65
+ and c3=t1.c3
66
+ and c4=t1.c4
67
+ and c5=t1.c5
68
+ )
69
+ ```

1

調整

2023/09/25 09:00

投稿

yambejp
yambejp

スコア117667

test CHANGED
@@ -1 +1,54 @@
1
1
  C1~C6をひとまとめにした複合インデックスを貼ってください
2
+
3
+ # 参考
4
+ ```SQL
5
+ create table tbl(id int primary key,
6
+ c1 varchar(10) not null,
7
+ c2 varchar(10) not null,
8
+ c3 varchar(10) not null,
9
+ c4 varchar(10) not null,
10
+ c5 varchar(10) not null,
11
+ c6 int not null,
12
+ index (c1,c2,c3,c4,c5,c6));
13
+
14
+
15
+ insert into tbl values
16
+ ( 1,'a1','b1','c1','d1','e1',1),
17
+ ( 2,'a1','b1','c1','d1','e1',2),
18
+ ( 3,'a1','b1','c2','d2','e2',3),
19
+ ( 4,'a1','b2','c2','d2','e2',4),
20
+ ( 5,'a1','b2','c2','d2','e2',5),
21
+ ( 6,'a2','b2','c2','d2','e2',6),
22
+ ( 7,'a2','b3','c2','d2','e2',7),
23
+ ( 8,'a2','b3','c2','d2','e2',8),
24
+ ( 9,'a3','b4','c2','d2','e2',9),
25
+ (10,'a3','b4','c2','d2','e2',0);
26
+ ```
27
+
28
+ 集計
29
+ ```SQL
30
+ select
31
+ c1,c2,c3,c4,c5
32
+ ,count(*) as cnt
33
+ ,sum(c6) as sum_c6
34
+ from tbl
35
+ group by c1,c2,c3,c4,c5
36
+ ```
37
+ 重複データを除外
38
+ ```SQL
39
+ select
40
+ c1,c2,c3,c4,c5
41
+ ,sum(c6) as sum_c6
42
+ from tbl
43
+ group by c1,c2,c3,c4,c5
44
+ having count(*)=1
45
+ ```
46
+ インデックスチェック
47
+ ```SQL
48
+ explain select
49
+ c1,c2,c3,c4,c5
50
+ ,sum(c6) as sum_c6
51
+ from tbl
52
+ group by c1,c2,c3,c4,c5
53
+ having count(*)=1
54
+ ```