簡體   English   中英

Oracle SQL:將WHERE語句與不同條件組合以列出匯總總數

[英]Oracle SQL: Combining WHERE statements with different criteria to list aggregate totals

Oracle SQL
我在數據庫中有銷售數據,並且我試圖根據其銷售區域為每個銷售人員提取年初至今的佣金總額。 所有銷售人員都必須遵守CUSTNO不能等於C001C002C003的約束。 這是1個銷售員。

SELECT sum(commission) AS Sales_Person_1
FROM salesdata
WHERE state IN ('TX',
                'CA',
                'FL')
  AND CUSTNO NOT IN ('C001',
                     'C002',
                     'C003')
  AND date >= 1/1/2017;

這樣一來,我就能連續獲得基於該人員的所有佣金,但是如何根據相似的地區標准編寫一個查詢以包括所有其他銷售人員呢?

我希望它也對相同的數據求和,但基於行“ GA ”,“ NY ”,行“ NH ”,“ WA ”等。

理想情況下,我希望我的數據返回為:

Sales_Person_1 $500      
Sales_Person_2 $999   
Sales_Person_3 $888  

我嘗試了GROUP BY但無法使用WHERE 我迷路了。 任何幫助將非常感激。

您的查詢可能如下所示:

SELECT state_group,
SUM(commission) AS Total_Commission
FROM (
  SELECT
  CASE
    WHEN state IN ('TX', 'CA', 'FL') THEN 'Group 1'
    WHEN state IN ('GA', 'NY') THEN 'Group 2'
    WHEN state IN ('NH', 'WA') THEN 'Group 3'
    ELSE 'Undefined Group'
  END AS state_group,
  commission
  FROM salesdata
  WHERE CUSTNO NOT IN ('C001', 'C002', 'C003')
  AND date >= TO_DATE('1/1/2017', 'd/m/yyyy')
)
GROUP BY state_group
ORDER BY state_group;

子查詢中的CASE語句使您可以將每個狀態值分配為“組”或“銷售人員”。 如果要在最終結果中顯示不同的值,可以重命名“組1”或“組2”。 如果您有更多的組,也可以添加額外的WHEN行。

外部查詢將匯總這些組的佣金,並向您顯示每個組的總數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM