0

この問題にタイトルを付ける方法がわかりませんでした。以下は、しきい値を超える何かの合計とそれ以下の合計の 2 つの値を作成する例ですが、2 つのステートメントは互いに排他的です。左結合または左結合を使用するとうまくいくと思いました。アイデアはありますか?

SELECT Count(Sale1.id) above500, 
       Count(sale2.id) below500, 
       employee.name 
FROM   employeesale es 
       INNER JOIN employee 
               ON es.employeeid = employee.id 
       LEFT JOIN sale Sale1 
              ON es.saleid = sale1.id 
       LEFT JOIN sale Sale2 
              ON es.saleid = sale2.id 
WHERE  Sale1.value >= 500 
       AND Sale2.value < 500 
4

1 に答える 1

7

両方の結合は必要ありません。条件付き集計を行います。

SELECT sum(case when sale.value >= 500 then 1 else 0 end) as above500, 
       sum(case when sale.value < 500 then 1 else 0 end) as below500, 
       employee.name 
FROM   employeesale es 
       INNER JOIN employee 
               ON es.employeeid = employee.id 
       LEFT JOIN sale
              ON es.saleid = sale.id 
group by employee.name

group by条項を追加しました。また、フィルタリング目的で使用しない限り、employeesale テーブルは必要ないようです。

于 2013-03-28T13:52:22.773 に答える