質問編集履歴

1

テーブル作成、データ投入のSQLを記載しました。また、求める中間結果および最終結果も記入しました。

2020/12/11 16:25

投稿

BrandNewMenu
BrandNewMenu

スコア1

test CHANGED
File without changes
test CHANGED
@@ -51,6 +51,74 @@
51
51
  groupBは、100以上の値がありませんので、全てを合計することになり、30 + 50 = 80
52
52
 
53
53
  となり、結果は80となります。
54
+
55
+
56
+
57
+ テーブル作成およびデータ挿入は下記です。
58
+
59
+ ```SQL
60
+
61
+ CREATE TABLE test_table1(
62
+
63
+ time TIME,
64
+
65
+ group_name NVARCHAR(10),
66
+
67
+ value INT
68
+
69
+ );
70
+
71
+
72
+
73
+ INSERT INTO test_table1 (time, group_name, value)
74
+
75
+ VALUES
76
+
77
+ ('00:30', 'groupA', 10),
78
+
79
+ ('01:30', 'groupA', 20),
80
+
81
+ ('03:30', 'groupA', 130),
82
+
83
+ ('05:30', 'groupA', 30),
84
+
85
+ ('07:30', 'groupA', 40),
86
+
87
+ ('09:30', 'groupA', 70),
88
+
89
+ ('00:30', 'groupB', 30),
90
+
91
+ ('01:30', 'groupB', 50)
92
+
93
+ ```
94
+
95
+
96
+
97
+ まずは中間結果として、valueが100以上のところで区切って、group_name毎のvalueの合計値を出したいです。
98
+
99
+ |group_name|valueの合計|
100
+
101
+ |:--|--:|
102
+
103
+ |groupA|30|
104
+
105
+ |groupA|140|
106
+
107
+ |groupB|80|
108
+
109
+
110
+
111
+ そして、同じgroup_nameの場合は最大値の方を最終結果とし、下記としたいです。
112
+
113
+ |group_name|valueの合計|
114
+
115
+ |:--|--:|
116
+
117
+ |groupA|140|
118
+
119
+ |groupB|80|
120
+
121
+
54
122
 
55
123
 
56
124