0

おはようございます。クロス集計クエリから計算された2つの列の割合を計算することはできますか?私の削減されたクエリは以下のとおりですか?

Select
  a.ContactFullName As Adviser,
  Sum(Month(b.CaseDate) = 1) As Jan,
  Sum(Month(b.CaseDate) = 2) As Feb,
  Sum(Month(b.CaseDate) = 3) As Mar,
  Count(b.CaseID) As Total,
  Count(b.StatusSubmittedDate) As Comms

From
  tblcontacts a Inner Join
  tblcases b On a.ContactID = b.ContactAssignedTo
Group By
  a.ContactFullName With Rollup

これは、各月のケースを表示する列として月を出力します。Total列は行をカウントし、Comms列は日付のあるケースのみをカウントします。私がやりたいのは、Total/Commsのパーセンテージを計算することです。

Total | Comms | %_Share
100   | 50    | 50%
346   | 53    | 15%
278   | 89    | 32%

私は間違った方法を見ていますか、達成するために複数のクエリを作成する必要がありますか?

見てくれてありがとう

4

1 に答える 1

1

別の列を選択するだけです。

Select …,
  100*Count(b.StatusSubmittedDate)/Count(b.CaseID) As `%_Share`
From …

これは 100*Comms/Total であり、期待される出力が示す方法であり、テキストに書いた Total/Comms ではありません。

私の知る限り、ある計算列を直接再利用して別の計算列の値を計算することはできません。しかし、 を繰り返し評価するためのオーバーヘッドはCountそれほど深刻であってはなりません。おそらく、MySQL はそのような一般的な用語を検出して、それらを 1 回だけ計算することさえあるでしょう。

于 2012-08-15T10:03:23.993 に答える