1

我有一个具有以下架构的数据库:

fund(fundID, fundName,totalShares) 
price(fundID,priceDate,price) 
trans(sin,fundID,transDate,shares) 
customer(sin,name,address,phone)
rep(repid,repName) 
customerRep(sin,repId)

我的任务是在每天交易后找到持有特定基金(“能源”)股份的独特客户。我不完全确定反式代表什么,即购买或购买的股票。我正在寻找提示而不是答案,如果可以,请使用示例代码,谢谢!

4

2 回答 2

1

试试这个

SELECT c.sin, c.name
FROM customer c 
INNER JOIN trans t ON t.sin = c.sin 
WHERE t.funcID = XXXX 
AND t.transDate = '2012-10-19' 

如果你想要文本匹配,即“能量”

SELECT c.sin, c.name
FROM customer c 
INNER JOIN trans t ON t.sin = c.sin 
INNER JOIN fund f ON f.fundID = t.fundID
WHERE f.fundName = 'Energy' 
AND t.transDate = '2012-10-19' 

编辑:

从您的回复中,交易表 (trans) 可以包含同一基金 ID 的同一日期的大量记录,这些记录将是该基金的买入/卖出。

在这种情况下,您将需要对这些求和。子查询可以做到这一点。我相信以下内容可以为您提供 sin、fundID、transDate 和 remaining_shares 的唯一编号。通过这种方式,您可以修剪所有交易并仅保留积极的交易,然后您可以与您的客户一起加入。

SELECT t.sin, t.fundID, t.transDate, SUM(t.shares) AS remaining_shares 
FROM trans t 
WHERE SUM(shares) > 0 
GROUP BY t.sin, t.fundID

高温高压

于 2012-10-19T04:01:53.663 回答
0

交易可以是很多东西。购买、销售、公司活动、应计收入、承担、起飞。

看起来您需要先查看表格trans

我认为这不是了解事务(除非您在谈论数据库)是什么的正确站点,但是可以帮助编程方面

于 2012-10-19T04:02:11.997 回答