ホームページ  >  に質問  >  本文

case を使用して 2 つの列の正しい合計を取得する方法

私は、販売員によって販売された単位を追跡するプログラムを開発しています。これは、完全な取引 (1) または半分の取引 (0.5) のいずれかになります。私がしなければならないのは、すべてのトランザクションの合計と、営業担当者 ID ごとにグループ化されたトランザクションの半分を取得する方法を見つけることです。

これはデータベース構造です:

###ヌル### 23 ###ヌル### 535 ###ヌル### 1 人の営業担当者の SUM のみを取得したい場合、有効なクエリがあります: 出力は期待どおりになります:
id 営業担当者ID salesperson_two_id 販売日
1 52022-07-02
3 5 2022-07-18
42022-07-16 4
3 2022-07-12 5
5 2022-07-17 6
2022-07-18 ###選択する 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;

###全取引###
半分のトランザクション

21.5 私が達成したいのは、テーブル内のすべての営業担当者に対してこれらの結果を取得することですが、それを達成する方法がわかりません。これが私が取得したい結果です: 営業担当者ID合計トランザクション数

53.531.541 可能であれば、結果をトランザクションの合計数で並べ替えたいと考えています。
P粉103739566P粉103739566213日前400

全員に返信(1)返信します

  • P粉590929392

    P粉5909293922024-03-20 15:56:49

    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;

    で注文
    表示
    デモ

    返事
    0
  • キャンセル返事