典型的な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 ではこれを避ける必要があります。