我試圖創建一個查詢,它包含一個百分比。下面是表的結構:在同一個查詢中獲取一個條件的總數
STransaction:
TRANSACTIONID -> NUMBER(10,0)
TRANSACTIONMONTH -> VARCHAR2(10 BYTE)
CUSTOMER_CUSTOMERID -> NUMBER(8,0)
COMMERCIALDESCRIPTION -> VARCHAR2(500 BYTE)
AMOUNTTM -> NUMBER(8,2)
AMOUNTDESCRIPTION -> VARCHAR2(50 BYTE)
FOB -> NUMBER(10,2)
FOBUNIT -> NUMBER(10,2)
CFR -> NUMBER(10,2)
CFRUNIT -> NUMBER(10,2)
SUPPLIER_SUPPLIERID -> NUMBER(8,0)
BOARDINGCOUNTRY -> VARCHAR2(50 BYTE)
BOARDINDBAY -> VARCHAR2(400 BYTE)
TRANSPORTATIONVIA -> VARCHAR2(50 BYTE)
CUSTOMS -> VARCHAR2(50 BYTE)
TRANSACTIONYEAR -> VARCHAR2(4 BYTE)
TRANSACTIONDAY -> VARCHAR2(2 BYTE)
CHAPTER -> VARCHAR2(3 BYTE)
TARIFFHEADING -> NUMBER(12,0)
PRODUCTFAMILY_PRODUCTFAMILYID -> NUMBER(5,0)
客戶:
CUSTOMERID -> NUMBER(8,0)
CUSTOMERNAME -> VARCHAR2(80 BYTE)
COUNTRY_COUNTRYID -> NUMBER(5,0)
ISVDT -> CHAR(1 BYTE)
供應商:
SUPPLIERID -> NUMBER(8,0)
SUPPLIERNAME -> VARCHAR2(80 BYTE)
SUPPLIERCOUNTRY -> VARCHAR2(50 BYTE)
ProductFamily:
PRODUCTFAMILYID -> NUMBER(5,0)
PRODFAMNAME -> VARCHAR2(60 BYTE)
國家:
COUNTRYID -> NUMBER(5,0)
COUNTRYNAME -> VARCHAR2(20 BYTE)
REGION_REGIONID -> NUMBER(5,0)
COUNTRYABBR -> VARCHAR2(5 BYTE)
我需要做一個表,每一年的銷售獲得每個客戶,這是由在STRANSACTION表中的列CFR代表的百分比。在下面的代碼,我有一個查詢,得到每個客戶的銷售額每年:
SELECT cus.customername c,
SUM(CASE WHEN tran.transactionyear = 2013 THEN tran.cfr ELSE 0 END) 2013,
SUM(CASE WHEN tran.transactionyear = 2014 THEN tran.cfr ELSE 0 END) 2014,
SUM(CASE WHEN tran.transactionyear = 2015 THEN tran.cfr ELSE 0 END) 2015,
SUM(CASE WHEN tran.transactionyear = 2016 THEN tran.cfr ELSE 0 END) 2016,
SUM(CASE WHEN tran.transactionyear = 2017 THEN tran.cfr ELSE 0 END) 2017
FROM Stransaction tran, Customer cus, Productfamily family, Country country
WHERE tran.customer_customerid = cus.customerid AND cus.country_countryid = country.countryid
AND tran.productfamily_productfamilyid = family.productfamilyid AND country.countryname = 'Germany'
AND tran.transactionyear > 2012 AND tran.transactionyear < 2018 AND family.prodfamname = 'Bond-offset Paper'
GROUP BY (cus.customername);
百分比必須從每年的銷售總額所有客戶的獲得。例如,2014年客戶1的銷售額佔2014年所有客戶總銷售額的2014年客戶1的銷售額。最後您應該看到如下表格:
C =客戶& & 1 =客戶名稱
C| 2013 | % | 2014 | % | 2015 | % | 2016 | % | 2017 |
|-------|-------|-------|-------|-------|-------|-------|-------|------|
1|165.250|100,00%|152.336|100,00%|136.540|100,00%|121.533|100,00%|80.345|
我怎樣才能獲得總計在同一個查詢?我測試了OVER等函數,但是這個函數應用於所有數據(並且數據是所有年份而不是特定年份 - >由於WHERE應用)。
謝謝,我驚訝於答案的質量,它實際上工作。我想問你是否知道一本好書能夠學習這個新標準,或者如果你推薦我在互聯網上搜索。 @ThorstenKettner – BiteBat
不,對不起,我沒有任何建議。我一直在使用SQL大約二十年,現在主要從Google和SO學習。但這不是一般性建議。我已經看到了w3schools,絕對不會推薦,但我沒有其他建議。 –
我瞭解你,無論如何非常感謝你。 – BiteBat