0

次の表があるとしましょう。

Aで始まるすべての名前に対する、で始まるすべての名前の比率を選択したいB

例えば

Name

ABC
DEF
VVV
BBB
BCD
ZZZ

したがって、出力は0.5になります。その出力を「out」と呼びたい。したがって、出力は次のようになります。

out

0.5

私が欲しいのはほとんど

Select count(*) from table where name like 'A%' / select count(*) from table where name like 'B%'

しかし、単一のクエリで。

4

2 に答える 2

4

あなたは次のようなことをすることができます:

select
   (select count(*) from table where name like 'a%') / (select count(*) from table where name like 'b%');

これがSQLフィドルです。

除数がゼロの場合、mySqlはゼロを合体してnullにし、結果の値はになりますnull。これは、除数をスローするOracleがゼロ例外に等しいと言うのとは異なります。

これは、この動作を示すSQLフィドルです。おそらく適切にトラップして処理する必要があります。

于 2012-08-22T22:13:33.240 に答える
0

このクエリは、必要なことを実行します。

SELECT ((SELECT COUNT(*) FROM `table` WHERE name LIKE 'A%') /
            (SELECT COUNT(*) FROM `table` WHERE name LIKE 'B%')) AS `out`
于 2012-08-22T22:15:41.130 に答える