これを検索するのに多くの時間を費やしましたが、重複している場合は教えてください。SQL:合計テーブル行数のpctとしての集計(*)
カテゴリの種類ごとにレコードのカテゴリを返すグループクエリを作成する必要があります。このようなもの:
select categorynum, count(*) from tbl group by categorynum;
これまでのところとても良いです。今私が必要とするのは、各カテゴリのカウントが占める割合を決定することです。それは作品
select categorynum, count(*), count(*)/(select count(*) from tbl) from tbl group by categorynum;
が、本当に私はこのようにそれを行うにはしつこいです:私が出ている最高のは、私はそれが汚い感じ、好きではないされ、これです。私が使用しているデータベースはPostgresの構文と互換性があり、テーブル上のcount(*)
は非常に高速ですので、テーブルにcount(*)
を実行しても大きなスピードはありませんが、できるだけもっと良いSQLを書いてみたいと思います。
これを書くには良い方法がありますか?これは私が頻繁に遭遇する状況なので、私は正確に質問を書いていきたいと思います。
これは元のものより複雑ですが、より速く実行できますか?このタイプのクエリには、ポインタのおかげで、多くの潜在的なアプリケーションがあります! –
'tbl'の行数に対する' categorynum'の値がほとんどない場合、ほとんどの作業はサブクエリで行われます。 'tbl'の行数に対する別の 'categorynums 'の割合が比較的高い場合、' sum'はあなたの速度を遅くする可能性があります。私は両方のクエリの 'explain'を介してクエリプランをチェックします。あなたは大歓迎です。 :) –