質問編集履歴

1

具体例の追記

2020/10/30 12:21

投稿

clateratail
clateratail

スコア24

test CHANGED
File without changes
test CHANGED
@@ -12,11 +12,45 @@
12
12
 
13
13
  の xxxx の部分をそのまま (SELECT ... FROM ...WHERE ... = tbl.id) の値にしたい等。
14
14
 
15
+
16
+
17
+
18
+
19
+ 具体的には
20
+
21
+ id-nameが一意なテーブルで、id-nameの数(num) と そのidの総数(isAllがtrueの行のnum) との割合から50%以上の行をSELECTします
22
+
23
+ |id|name|num|isAll|
24
+
25
+ |:--|:--:|--:||
26
+
27
+ |a|あ|2||
28
+
29
+ |a|い|3||
30
+
31
+ |a||5|true|
32
+
33
+ |b|う|4||
34
+
35
+ |b||4|true|
36
+
37
+ ```mySQL
38
+
39
+ SELECT xxxx FROM tbl AS tbl_1 WHERE 100*num / (SELECT num FROM tbl WHERE id = tbl_1.id AND isAll = true) > 50
40
+
41
+ ```
42
+
43
+ xxxx に 100*num / (SELECT num FROM tbl WHERE id = tbl_1.id AND isAll = true) の値を出力したいです
44
+
45
+
46
+
47
+
48
+
15
49
  相関サブクエリなので、事前に定数としての保持ができず
16
50
 
17
51
  AS や SELECT INTO もエラーとなり
18
52
 
19
- xxxxにそのまま(SELECT ... FROM ...WHERE ... = tbl.id)を書けばできるのですが
53
+ xxxxにそのままWHEREで使用したサブクエリを書けばできるのですが
20
54
 
21
55
  何か省略したり結果を使いまわすやり方はあるのでしょうか
22
56