0
私はかなり複雑なクエリを持っています。ここでは単純化して理解できるようにしています。MySQLがこれらの列を追加しないのはなぜですか?
以下の例では、2つの異なる製品の売上のSUM
を取得しようとしています。最初の2つの列ごとにSUM
を個別に取得すると、正しく計算されます。
しかし、製品Yが販売されているが、NOT製品Xは、値として完全に空白を返す場合、(第3列に)2つのSUM
クエリを追加するとき。
これは何故でしょうか?
SELECT
(
SELECT SUM(IFNULL(product_x_sales.price, 0))
FROM sales AS product_x_sales
GROUP BY product_x_sales.customer_id
) AS "Total Sales of Product X",
SUM(IFNULL(product_y_sales.price, 0)) AS "Total Sales of Product Y",
(
SELECT SUM(IFNULL(product_x_sales.price, 0))
FROM sales AS product_x_sales
GROUP BY product_x_sales.customer_id
) + (
SUM(IFNULL(product_y_sales.price, 0))
) AS "Total Sales of Products X and Y"
FROM customers
JOIN sales AS product_y_sales ON customers.id = product_y_sales.customer_id
GROUP BY agents.id
に変更し、それはあなたが私たちにサンプル入力/出力を表示することができますか? GROUP BY句に集約されていないか、または含まれていないと仮定すると、それらのサブクエリを含めることは意味がありますか? Whenceは 'GROUP BY agents.id'のエイリアス' agents'ですか?私はあなたのクエリを簡素化することが良いアイデアであるかどうかはわかりません。 –
これは、右側に全体的な合計値を持つピボットテーブルを作成する場合と同じように見えます。これをクライアントアプリケーションで簡単に達成できないと確信していますか? – Shadow
これは正しくありません。クエリの結果セットが正しくありません。基本的に、あなたのクエリは、独自のことをする** THREE **異なるSELECT文を持っています。 –