- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为每个股票/股票投资组合创建连续的付款总额,其中给定股票和投资组合有多个股票购买交易,我需要通过将股票分组为单行股票该行的数量和付款。
下面的表架构和数据以及查询和查询结果
CREATE TABLE `test` (
`code` varchar(10) DEFAULT NULL,
`portfolio` varchar(30) DEFAULT NULL,
`pdate` date DEFAULT NULL,
`dividend` decimal(12,2) DEFAULT NULL,
`quantity` int(11) DEFAULT NULL,
`payment` double(12,2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
LOCK TABLES `test` WRITE;
/*!40000 ALTER TABLE `test` DISABLE KEYS */;
INSERT INTO `test` VALUES
('BLND','AJB_SIPP_CO','2018-05-05',7.52,1643,124.00),
('BLND','AJB_SIPP_CO','2018-05-05',7.52,1643,124.00),
('AV.','AJB_SIPP_CO','2018-05-17',15.88,2135,340.00),
('AV.','SFT_DEA_CO','2018-05-17',15.88,2318,369.00),
('DLG','AJB_SIPP_CO','2018-05-18',9.70,2732,266.00),
('DLG','SFT_DEA_CO','2018-05-18',9.70,2789,271.00),
('SLA','AJB_SIPP_CO','2018-05-23',13.35,2820,377.00),
('SLA','SFT_DEA_CO','2018-05-23',13.35,3247,434.00),
('PHP','AJB_SIPP_CO','2018-05-27',1.31,6947,92.00),
('LLOY','AJB_SIPP_CO','2018-05-29',2.05,15519,319.00),
('LLOY','SFT_DEA_CL','2018-05-29',2.05,40011,821.00),
('LLOY','SFT_ISA_CO','2018-05-29',2.05,7973,164.00),
('FCPT','AJB_SIPP_CL','2018-05-31',0.50,223,2.00),
('FCPT','AJB_SIPP_CO','2018-05-31',0.50,5837,30.00),
('RLSEB','AJB_SIPP_CO','2018-05-31',1.80,5021,91.00),
('FCPT','SFT_ISA_CL','2018-05-31',0.50,3609,19.00),
('RLSEB','SFT_ISA_CL','2018-05-31',1.80,2100,38.00),
('FCPT','SFT_ISA_CO','2018-05-31',0.50,5136,26.00),
('RLSEB','SFT_ISA_CO','2018-05-31',1.80,2100,38.00),
('LGEN','AJB_SIPP_CO','2018-06-08',10.35,3923,407.00),
('LGEN','SFT_DEA_CL','2018-06-08',10.35,10652,1103.00),
('BP.','AJB_SIPP_CO','2018-06-23',7.67,2130,164.00),
('RDSB','AJB_SIPP_CO','2018-06-23',35.02,436,153.00),
('RDSB','SFT_DEA_CL','2018-06-23',35.02,1292,453.00),
('BP.','SFT_DEA_CO','2018-06-23',7.67,446,35.00),
('CNA','AJB_SIPP_CO','2018-06-29',8.40,7512,632.00);
/*!40000 ALTER TABLE `test` ENABLE KEYS */;
UNLOCK TABLES;
下面显示查询,后跟结果
select
@row_n := @row_n + 1 as row_n,
row_num,
code,
portfolio,
pdate,
dividend,
quantity,
payment,
balance
from ( select
@row_num := @row_num + 1 as row_num,
code,
portfolio,
pdate,
dividend,
quantity,
ceiling(dividend*quantity/100) as payment,
@balance := ceiling(dividend*quantity/100) + if (@prev_pfl = portfolio,@balance,0) as balance,
@prev_pfl := portfolio as prev_portfolio
from test
cross join
( select @row_num := 0, @balance := 0, @prev_pfl := '' ) as InitVarsAlias
order by portfolio, pdate,code) as SubQueryAlias
cross join
(select @row_n := 0 ) as InitVarsAlias2
order by pdate,portfolio,code,row_num;
查询结果,后面是期望的结果
row_n row_num code portfolio pdate dividend quantity payment balance
1 2 BLND AJB_SIPP_CO 2018-05-05 7.52 1643 124 124
2 3 BLND AJB_SIPP_CO 2018-05-05 7.52 1643 124 248
3 4 AV. AJB_SIPP_CO 2018-05-17 15.88 2135 340 588
4 18 AV. SFT_DEA_CO 2018-05-17 15.88 2318 369 369
5 5 DLG AJB_SIPP_CO 2018-05-18 9.70 2732 266 854
6 19 DLG SFT_DEA_CO 2018-05-18 9.70 2789 271 640
7 6 SLA AJB_SIPP_CO 2018-05-23 13.35 2820 377 1231
8 20 SLA SFT_DEA_CO 2018-05-23 13.35 3247 434 1074
9 7 PHP AJB_SIPP_CO 2018-05-27 1.31 6947 92 1323
10 8 LLOY AJB_SIPP_CO 2018-05-29 2.05 15519 319 1642
11 15 LLOY SFT_DEA_CL 2018-05-29 2.05 40011 821 821
12 24 LLOY SFT_ISA_CO 2018-05-29 2.05 7973 164 164
13 1 FCPT AJB_SIPP_CL 2018-05-31 0.50 223 2 2
14 9 FCPT AJB_SIPP_CO 2018-05-31 0.50 5837 30 1672
15 10 RLSEB AJB_SIPP_CO 2018-05-31 1.80 5021 91 1763
16 22 FCPT SFT_ISA_CL 2018-05-31 0.50 3609 19 19
17 23 RLSEB SFT_ISA_CL 2018-05-31 1.80 2100 38 57
18 25 FCPT SFT_ISA_CO 2018-05-31 0.50 5136 26 190
19 26 RLSEB SFT_ISA_CO 2018-05-31 1.80 2100 38 228
20 11 LGEN AJB_SIPP_CO 2018-06-08 10.35 3923 407 2170
21 16 LGEN SFT_DEA_CL 2018-06-08 10.35 10652 1103 1924
22 12 BP. AJB_SIPP_CO 2018-06-23 7.67 2130 164 2334
23 13 RDSB AJB_SIPP_CO 2018-06-23 35.02 436 153 2487
24 17 RDSB SFT_DEA_CL 2018-06-23 35.02 1292 453 2377
25 21 BP. SFT_DEA_CO 2018-06-23 7.67 446 35 1109
26 14 CNA AJB_SIPP_CO 2018-06-29 8.40 7512 632 3119
期望的结果如上所述,但 BLND 是唯一具有多于一笔交易的股票,数量和付款按如下方式分组/汇总(2 行汇总为单行)
row_n row_num code portfolio pdate dividend quantity payment balance
1 2 BLND AJB_SIPP_CO 2018-05-05 7.52 3286 248 248
2 4 AV. AJB_SIPP_CO 2018-05-17 15.88 2135 340 588
3 18 AV. SFT_DEA_CO 2018-05-17 15.88 2318 369 369
4 5 DLG AJB_SIPP_CO 2018-05-18 9.70 2732 266 854
5 19 DLG SFT_DEA_CO 2018-05-18 9.70 2789 271 640
6 6 SLA AJB_SIPP_CO 2018-05-23 13.35 2820 377 1231
7 20 SLA SFT_DEA_CO 2018-05-23 13.35 3247 434 1074
等等...
提前非常感谢您提供有关如何实现此结果的任何建议。
科林
最佳答案
您可以使用另一个子查询来扩展现有查询,如下所示。
select
@row_n := @row_n + 1 as row_n,
row_num,
code,
portfolio,
pdate,
dividend,
quantity,
payment,
balance
from ( select
@row_num := @row_num + 1 as row_num,
code,
portfolio,
pdate,
dividend,
quantity,
ceiling(dividend*quantity/100) as payment,
@balance := ceiling(dividend*quantity/100) + if (@prev_pfl = portfolio,@balance,0) as balance,
@prev_pfl := portfolio as prev_portfolio
from ( select
code,
portfolio,
pdate,
dividend,
sum(quantity) as quantity
from test
group by portfolio, pdate,code, dividend
order by portfolio, pdate,code, dividend ) as SubQueryAlias1
cross join
( select @row_num := 0, @balance := 0, @prev_pfl := '' ) as InitVarsAlias1
order by portfolio, pdate,code) as SubQueryAlias2
cross join
(select @row_n := 0 ) as InitVarsAlias2
order by pdate,portfolio,code,row_num;
它将根据您的要求提供适当的输出。
row_n row_num code portfolio pdate dividend quantity payment balance
1 2 BLND AJB_SIPP_CO 2018-05-05 7.52 3286 248 248
2 3 AV. AJB_SIPP_CO 2018-05-17 15.88 2135 340 588
3 17 AV. SFT_DEA_CO 2018-05-17 15.88 2318 369 369
4 4 DLG AJB_SIPP_CO 2018-05-18 9.70 2732 266 854
5 18 DLG SFT_DEA_CO 2018-05-18 9.70 2789 271 640
6 5 SLA AJB_SIPP_CO 2018-05-23 13.35 2820 377 1231
7 19 SLA SFT_DEA_CO 2018-05-23 13.35 3247 434 1074
8 6 PHP AJB_SIPP_CO 2018-05-27 1.31 6947 92 1323
9 7 LLOY AJB_SIPP_CO 2018-05-29 2.05 15519 319 1642
10 14 LLOY SFT_DEA_CL 2018-05-29 2.05 40011 821 821
11 23 LLOY SFT_ISA_CO 2018-05-29 2.05 7973 164 164
12 1 FCPT AJB_SIPP_CL 2018-05-31 0.50 223 2 2
13 8 FCPT AJB_SIPP_CO 2018-05-31 0.50 5837 30 1672
14 9 RLSEB AJB_SIPP_CO 2018-05-31 1.80 5021 91 1763
15 21 FCPT SFT_ISA_CL 2018-05-31 0.50 3609 19 19
16 22 RLSEB SFT_ISA_CL 2018-05-31 1.80 2100 38 57
17 24 FCPT SFT_ISA_CO 2018-05-31 0.50 5136 26 190
18 25 RLSEB SFT_ISA_CO 2018-05-31 1.80 2100 38 228
19 10 LGEN AJB_SIPP_CO 2018-06-08 10.35 3923 407 2170
20 15 LGEN SFT_DEA_CL 2018-06-08 10.35 10652 1103 1924
21 11 BP. AJB_SIPP_CO 2018-06-23 7.67 2130 164 2334
22 12 RDSB AJB_SIPP_CO 2018-06-23 35.02 436 153 2487
23 16 RDSB SFT_DEA_CL 2018-06-23 35.02 1292 453 2377
24 20 BP. SFT_DEA_CO 2018-06-23 7.67 446 35 1109
25 13 CNA AJB_SIPP_CO 2018-06-29 8.40 7512 632 311
祝你好运!
关于php - mysql运行按列分组的付款总额,共享代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50222313/
我尝试理解[c代码 -> 汇编]代码 void node::Check( data & _data1, vector& _data2) { -> push ebp -> mov ebp,esp ->
我需要在当前表单(代码)的上下文中运行文本文件中的代码。其中一项要求是让代码创建新控件并将其添加到当前窗体。 例如,在Form1.cs中: using System.Windows.Forms; ..
我有此 C++ 代码并将其转换为 C# (.net Framework 4) 代码。有没有人给我一些关于 malloc、free 和 sprintf 方法的提示? int monate = ee; d
我的网络服务器代码有问题 #include #include #include #include #include #include #include int
给定以下 html 代码,将列表中的第三个元素(即“美丽”一词)以斜体显示的 CSS 代码是什么?当然,我可以给这个元素一个 id 或一个 class,但 html 代码必须保持不变。谢谢
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我试图制作一个宏来避免重复代码和注释。 我试过这个: #define GrowOnPage(any Page, any Component) Component.Width := Page.Surfa
我正在尝试将我的旧 C++ 代码“翻译”成头条新闻所暗示的 C# 代码。问题是我是 C# 中的新手,并不是所有的东西都像 C++ 中那样。在 C++ 中这些解决方案运行良好,但在 C# 中只是不能。我
在 Windows 10 上工作,R 语言的格式化程序似乎没有在 Visual Studio Code 中完成它的工作。我试过R support for Visual Studio Code和 R-T
我正在处理一些报告(计数),我必须获取不同参数的计数。非常简单但乏味。 一个参数的示例查询: qCountsEmployee = ( "select count(*) from %s wher
最近几天我尝试从 d00m 调试网络错误。我开始用尽想法/线索,我希望其他 SO 用户拥有可能有用的宝贵经验。我希望能够提供所有相关信息,但我个人无法控制服务器环境。 整个事情始于用户注意到我们应用程
我有一个 app.js 文件,其中包含如下 dojo amd 模式代码: require(["dojo/dom", ..], function(dom){ dom.byId('someId').i
我对“-gencode”语句中的“code=sm_X”选项有点困惑。 一个例子:NVCC 编译器选项有什么作用 -gencode arch=compute_13,code=sm_13 嵌入库中? 只有
我为我的表格使用 X-editable 框架。 但是我有一些问题。 $(document).ready(function() { $('.access').editable({
我一直在通过本教程学习 flask/python http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-wo
我想将 Vim 和 EMACS 用于 CNC、G 代码和 M 代码。 Vim 或 EMACS 是否有任何语法或模式来处理这种类型的代码? 最佳答案 一些快速搜索使我找到了 this vim 和 thi
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve this
这个问题在这里已经有了答案: Enabling markdown highlighting in Vim (5 个回答) 6年前关闭。 当我在 Vim 中编辑包含 Markdown 代码的 READM
我正在 Swift3 iOS 中开发视频应用程序。基本上我必须将视频 Assets 和音频与淡入淡出效果合并为一个并将其保存到 iPhone 画廊。为此,我使用以下方法: private func d
pipeline { agent any stages { stage('Build') { steps { e
我是一名优秀的程序员,十分优秀!