0
我有一個由2個表格組成的模式,clients
和holdings
。 holdings
包含特定日期某個客戶的投資組合持有。SQL選擇投資組合持股的集中度
客戶
id int AUTO_INCREMENT PRIMARY KEY,
name varchar(30)
控股
id int AUTO_INCREMENT PRIMARY KEY,
client_id int,
holding varchar(80),
value decimal(6,2),
holding_date DATE
如何獲得我選擇的比例是一個特定的控股彌補其客戶在該日的投資組合?
E.g.如果客戶1在2014-11-30在其投資組合中持有3個持股(持有1,2,3),分別爲80,80和40,則它們分別佔40%,40%和20%。我遇到的問題是得到除數,這是某個客戶在某個日期的所有持股總和。我認爲需要一個子查詢,但我無法形成它。
我已經試過類似
SELECT clients.name, holdings.name, sum(holdings.value)/(SELECT sum(holdings.value) WHERE holdings.date = '2014-11-30' AND ...) -- how do I get the conditions in the subquery
FROM clients LEFT JOIN holdings ON holdings.id = holdings.client_id
WHERE holdings.date = '2014-11-30'
GROUP BY clients.name, holdings.name
我做了一個sqlfiddle幫助可視化場景,並用樣本數據填充它:http://sqlfiddle.com/#!2/2083d
我需要別名表名嗎? 'h。*'和'h2。*'如何工作? – harryg 2014-11-24 11:55:44
啊,我知道你已經把他們誣衊了...... – harryg 2014-11-24 12:30:12
@harryg。 。 。你需要別名表名。這就是'h'和'h2'。 – 2014-11-24 12:30:15