私は、販売員によって販売された単位を追跡するプログラムを開発しています。これは、完全な取引 (1) または半分の取引 (0.5) のいずれかになります。私がしなければならないのは、すべてのトランザクションの合計と、営業担当者 ID ごとにグループ化されたトランザクションの半分を取得する方法を見つけることです。
これはデータベース構造です:
id | 営業担当者ID | salesperson_two_id | 販売日 |
---|---|---|---|
1 | 5 | ###ヌル###2022-07-02 | |
3 | 5 | 2022-07-18 | |
4 | ###ヌル###2022-07-16 | 4 | |
3 | 2022-07-12 | 5 | |
5 | 2022-07-17 | 6 | |
2022-07-18 | 1 人の営業担当者の SUM のみを取得したい場合、有効なクエリがあります: | ###選択する SUM(salesperson_id = 5 かつ isnull(salesperson_two_id) の場合、1 の場合) fullDeals として、 SUM(saleser_id != 5 および sales_two_id = 5 の場合 または sales_id = 5 および sales_two_id != 5、その後 0.5 end) としてhalfDeals FROM sold_logs WHERE MONTH(Sold_date) = 07 AND YEAR(Sold_date) = 2022; |
###全取引###
半分のトランザクション
1.5 | |
---|---|
営業担当者ID |
3.5 | |
---|---|
4 | |
UNION ALL
で注文 デモを使用して、各営業担当者のすべての行を含む結果セットを取得し、必要な月をフィルタリングして集計します。
SELECT 営業担当者 ID、 SUM(Salesforce_two_id が NULL の場合、THEN 1 ELSE 0.5 END) totalDeals から ( sold_logs から sales_id、sales_two_id、 sold_date を選択します すべてを結合する sold_logs から sales_two_id、sales_id、 sold_date を選択します。 WHERE sales_two_id は NULL ではありません )t WHERE MONTH(販売日) = 7 AND YEAR(販売日) = 2022 営業担当者 ID によるグループ化 totalDeals DESC;。