回答編集履歴
2
追記
answer
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
集計関数を使うためにはグループ化しなくてはいけません。
|
2
2
|
記述を省略しても内部的にグループされています。
|
3
|
+
(例示のSQLでは全体を1つのグループとみなしています)
|
3
|
-
そして一般的にSQLではグループ化に使ったカラム以外
|
4
|
+
そして一般的にSQLではグループ化に使ったカラム以外を参照するとエラーになります。
|
4
5
|
※しかし、mysqlはこれをエラーにしません。
|
5
6
|
|
6
7
|
```
|
@@ -16,4 +17,13 @@
|
|
16
17
|
※おそらくデータ的に先頭に近いものが選択されていると思いますが、この順は食費を更新したりすると変化するでしょう。
|
17
18
|
|
18
19
|
**二つ目のSQLでは**
|
19
|
-
値が7560のレコードに絞り込んでいますので、「水道光熱費」か「家賃」のどちらが選択されます。
|
20
|
+
値が7560のレコードに絞り込んでいますので、「水道光熱費」か「家賃」のどちらが選択されます。
|
21
|
+
|
22
|
+
|
23
|
+
もし値が最大のレコードを抽出したいなら次のようなSQLになります。
|
24
|
+
※最大値のレコードが複数あれば、複数が抽出されます。
|
25
|
+
```SQL
|
26
|
+
SELECT item, amount_invested
|
27
|
+
FROM hoge
|
28
|
+
WHERE amount_invested = (SELECT MAX(amount_invessted) FROM hoge);
|
29
|
+
```
|
1
表現修正
answer
CHANGED
@@ -11,8 +11,8 @@
|
|
11
11
|
```
|
12
12
|
仮にデータがこうだったとします。
|
13
13
|
**最初のSQLでは**
|
14
|
-
maxは7560と確定ですが、itemはamount_investedの値が7560のitemという縛りが無いので、「食費」か「水道光熱費」か「家賃」のど
|
14
|
+
maxは7560と確定ですが、itemはamount_investedの値が7560のitemという縛りが無いので、「食費」か「水道光熱費」か「家賃」のどれが選択されても良い状況です。
|
15
|
-
このような場合、mysqlはユーザには結果が予測できない基準で一つを選択します。
|
15
|
+
このような場合、mysqlは**ユーザには結果が予測できない基準で**一つを選択します。
|
16
16
|
※おそらくデータ的に先頭に近いものが選択されていると思いますが、この順は食費を更新したりすると変化するでしょう。
|
17
17
|
|
18
18
|
**二つ目のSQLでは**
|