SQLでパーセント/合計を計算するには?質問する

SQLでパーセント/合計を計算するには?質問する

典型的なCUSTOMER/ORDERSテーブルセットがあり、合計を表示したいのですがパーセンテージ特定の顧客が担当する売上の合計。システム内の注文の合計数は次のように取得できます。

SELECT COUNT(order_id) FROM orders

顧客が行った注文の合計数は次のようにして取得できます。

SELECT COUNT(order_id) FROM orders WHERE cust_id = 541

これらを単一のクエリに結合して、特定の顧客の売上の割合を返すにはどうすればよいですか? ありがとうございます!

ベストアンサー1

マイグレーション:

SELECT ROUND(
  100.0 * (
      SUM(IF(cust_id = 541, 1, 0)) / COUNT(order_id)
  ), 1) AS percent_total
FROM orders;

編集

もし私がそれに気付いていたら、ポストグルタグ。MySQL に関する質問だと思いました。

PostgreSQL:

SELECT ROUND(
  100.0 * (
      SUM(CASE WHEN cust_id = 541 THEN 1 ELSE 0 END)::numeric / COUNT(order_id)
  ), 1) AS percent_total
FROM orders;

PS 私の PostgreSQL は錆びているので、MySQL クエリが PostgreSQL で動作するかどうか知りたいです :)

編集2

以下の count(*) の提案には十分注意する必要があります。通常、PostgreSQL ではこれを避ける必要があります。

おすすめ記事