1

SELECT2 つのステートメントによって返される列を組み合わせて、要素ごとの商を得るにはどうすればよいですか?

クエリ 1:

SELECT COUNT(*) AS count
FROM table1
WHERE col2 = 1 AND col3 > 5
GROUP BY col4
ORDER BY col4

クエリ 2:

SELECT COUNT(*) AS count
FROM table1
WHERE col2 = 1
GROUP BY col4
ORDER BY col4

したがって、次のようなものが返された場合:

Query 1        Query 2
count           count
-----------------------
1              5
2              4

私は手に入れます:

quotient
-------
0.2
0.5
4

3 に答える 3

2

質問の4列バージョンでは、商は。の同じ値を持つグループ間にあると想定できますcol4。したがって、答えは次のようになります。

SELECT col4, SUM(CASE WHEN col3 > 5 THEN 1 ELSE 0 END) / COUNT(*) AS quotient
  FROM table1
 WHERE col2 = 1
 GROUP BY col4;

col4どの商がどの値に関連付けられているかを特定するものがなければ、比率(商)は役に立たないと思うので、出力に保持しましたが、理論的には、答えは出力にその列を必要としません。

于 2012-06-05T01:57:48.983 に答える
1

他の回答のように実際のクエリを簡略化できない場合は、次のようにサブクエリに参加できます。

select j1.count / j2.count as quotient
from (
   SELECT col4, COUNT(*) AS count
   FROM table1
   WHERE col2 = 1 AND col3 > 5
   GROUP BY col4      
) j1
join (
   SELECT col4, COUNT(*) AS count
   FROM table1
   WHERE col2 = 1
   GROUP BY col4
) j2 on j1.col4=j2.col4
于 2012-06-05T01:46:40.383 に答える
1

この場合、2つの個別のクエリはまったく必要ありません。

SELECT   SUM(col3 > 5) / COUNT(*)
FROM     table1
WHERE    col2 = 1
GROUP BY col4
ORDER BY col4
于 2012-06-05T01:55:57.953 に答える