我是 MySQL 新手,需要帮助我想做的事情。我有 3 张桌子eod-stock
和. 表格包含在证券交易所上市的公司的所有数据,代码由证券交易所指定。有一天中每分钟交易的数据,它也有相同的 company_code 字段。有股数等数据。我想要的总结如下:company
share_percentage
company
eod_stock
share_percentage
第 1 步:将表中的 company_code 字段与eod_stock
表中的代码字段匹配company
。字段的值相同(为公司分配的代号)。
第二步:按字段排序sector_id
。该字段在company
表中。这些行业都有独特的不同ID,并且它们下有公司(有点像类别子类别。行业ID是类别,属于特定行业的公司将归入该类别)
第 3 步:根据last_trade_price
(in eod_stock
table) 字段和datetime
(last)对第 2 步中的公司进行排序
第 4 步share_percentage
:通过 company_code 字段匹配表中 no_of_shares的公司
step3
第5步:乘以 step4
第 6 步:第 5 步的总和(按部门划分的公司总和。例如,所有银行的总和)
第 7 步:step 5
除以step 6
第 8 步:按部门计算第 7 步的总和(例如:所有银行)= 结果
我希望我的解释足够详细。我无法让它工作。任何帮助深表感谢。提前致谢!
表样本和我想要的:
TABLE company:
code: "google", "HSBC", "yahoo", "SCB"
sector_id: "1" ,"2", "1", "2"
TABLE eod_stock:
company_code : "google", "HSBC", "yahoo", "SCB"
ltp: "110", "115.2", "122.4", 105"
datetime: "1/1/2014 11:00", "1/1/2014 11:00", "1/1/2014 11:00", "1/1/2014 11:00"
company_code : "google", "HSBC", "yahoo", "SCB"
ltp: "112", "108.2", "112.4", 105.80"
datetime: "1/1/2014 11:01", "1/1/2014 11:01", "1/1/2014 11:01", "1/1/2014 11:01"
TABLE : share_percentage
company_code: "google", "HSBC", "yahoo", "SCB"
total_share: "12000", "20000", "5000", "18000"
和我的代码:
SELECT company.sector_id,
SUM(eod_stock.ltp * share_percentage.total_share) AS Market_CAP
FROM company
INNER JOIN (SELECT max(datetime) as lastTime,company_code
FROM eod_stock
GROUP BY company_code) as LAST_TRADE
ON LAST_TRADE.company_code = company.code
INNER JOIN eod_stock on eod_stock.datetime = Last_trade.lastTime
and eod_stock.company_code = company.code
INNER JOIN share_percentage on share_percentage.company_code = company.code
GROUP BY company.sector_id;
我知道我的 sql 不行,但我想要达到的最终结果是 8.3。我知道我可以通过中断操作使用 php 对其进行编码,但如果可以节省时间,我想从 sql 中实现它。