SQLクエリに問題があります。テーブルからそれを呼び出しましょうレポート:条件付きおよび条件なしの列からのSQLクエリによるグループまたは割合
すべてのレポートを名前列でグループ化したいと思います。
これらの名前のグループごとに、評価欄に移動して、評価が15回以下であった回数をカウントします。 BOBBOという名前のグループの1つで、これが10回起こったとしましょう。
評価を送信した回数(各名前グループの合計レコード数と同じ)も知りたいと思う。だから、名前のグループBOBBOを使って、彼は20の評価を持っているとしましょう。
したがって、条件の下で、グループBOBBOの時間の50%は、レーティングが15以下です。
私はこれらの記事を見ました - 私はまだこれをクラックするいくつかの問題を抱えています。
ActiveRecord::Base.connection.execute
("SELECT COUNT(*) Matched,
(select COUNT(rating) from reports group by name) Total,
CAST(COUNT(*) AS FLOAT)/CAST((SELECT COUNT(*) FROM reports group by name) AS FLOAT)*100 Percentage from reports
where rating <= 15 order by Percentage")
ActiveRecord::Base.connection.execute
("select name, sum(rating)/count(rating) as bad_rating
from reports group by name having bad_rating <= 15")
すべてのヘルプWO:
using-count-and-return-percentage-against-sum-of-records
getting-two-counts-and-then-dividing-them
getting-a-percentage-from-mysql-with-a-group-by-condition-and-precision
divide-two-counts-from-one-select
それらを読んだ後、私はこれらのようなクエリを試してみましたuldは非常に高く評価される!
SELECT [name],
SUM(CASE WHEN [rating] <= 15 THEN 1 ELSE 0 END)/Count(*) AS bad_rating
FROM Reports
GROUP BY [name]
または@CLとして:
'sum(rating <15)'はより短い条件付き集計(論理式が合算されるところ)を指します。 –
確かに。ありがとう@CL。 - あなたの提案を追加! – Parfait