2017-03-12 7 views
0

私は3つのテーブル、すなわちa_sws、b_sws、c_swsを持っています。 これらはすべて次の列と同じです。接頭辞の異なる3つのテーブルから上位5つの値を取得する

salesman_id salesman_name product_price product_quantity 

私はこのクエリを使用して、1つのテーブル上のトップ5最高の売上を得ることができます:

SELECT salesman_id, salesman_name , 
SUM(product_price * product_quantity) AS TotalSales 
      FROM a_sws 
      GROUP BY salesman_id 
      ORDER BY SUM(product_price * product_quantity) DESC 
      LIMIT 5; 

私は3つのテーブルからトップ5の販売を取得するにはどうすればよいですか?

+0

結果を表示します。どのようにデータを結合したいのかは明らかではありませんが、 'union all'が気になります。 –

答えて

2

私はあなたが3つのテーブル間で、販売員のレコードを合計すると仮定した場合、union allが頭に浮かぶ:

SELECT salesman_id, salesman_name, 
     SUM(product_price * product_quantity) AS TotalSales 
FROM ((SELECT salesman_id, salesman_name, product_price, product_quantity 
     FROM a_sws 
    ) UNION ALL 
     (SELECT salesman_id, salesman_name, product_price, product_quantity 
     FROM b_sws 
    ) UNION ALL 
     (SELECT salesman_id, salesman_name, product_price, product_quantity 
     FROM c_sws 
    ) 
    ) abc 
GROUP BY salesman_id 
ORDER BY TotalSales DESC 
LIMIT 5; 

現在、いくつかの論評のために。あなたは、営業担当者のIDと名前を実際の販売と同じテーブルに格納すべきではありません。 IDは十分です。 SalesPersonテーブルの名前を参照する必要があります。

また、同じ情報を持つ3つのテーブルを持つことはできません。このデータは、元のデータを分割するために使用された「タイプ」またはタイムフレームを識別する列を含む単一のテーブルに格納されます。

関連する問題