![](/img/trans.png)
[英]Combining two SQL statements with same stem but different where clause
[英]Oracle SQL: Combining WHERE statements with different criteria to list aggregate totals
Oracle SQL :
我在數據庫中有銷售數據,並且我試圖根據其銷售區域為每個銷售人員提取年初至今的佣金總額。 所有銷售人員都必須遵守CUSTNO不能等於C001
, C002
或C003
的約束。 這是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.