【金融数据分析】计算沪深300指数行业权重分布并用饼图展示

前言

前面的文章我们已经介绍了如何获取沪深300成分股所述行业以及权重的数据,想要了解这部分内容的小伙伴可以阅读上一篇文章

springboot+jdbcTemplate+sqlite编程示例——以沪深300成分股数据处理为例-CSDN博客

那么有了上文获取的数据,我们实际上可以计算一下沪深300按照行业分布的权重占比数据,最后的成果如下所示

 是不是效果还挺酷的,下面就来介绍一下技术细节。

后端技术细节

首先来讲一下后端的技术细节,其实后端需要做的就是从表中获取按行业区分的权重数据,我们先来看一下数据表

数据表中包含了所述行业和权重占比,那么思路就很明确了,我们只需要查出所有的行业,然后按照行业统计权重之和就行了。

我们的实体类非常简单,就是所属行业和对应的权重

@Data
@AllArgsConstructor
@NoArgsConstructor
public class CSI300DistVO {

    private String industry;
    private Double weight;

}

接着就是使用JdbcTemplate将数据查出来

    public List<CSI300DistVO> queryDist() {
        // 首先查询所有的行业
        String sql = "SELECT DISTINCT industry FROM "+ tableName;
        List<String> industrys = jdbcTemplate.queryForList(sql, String.class);
        // 查询每个行业的权重和
        List<CSI300DistVO> csi300DistVOList = new ArrayList<>();
        for(int i=0; i<industrys.size(); i++) {
            sql = "SELECT SUM(weight) FROM " + tableName +
                    " WHERE industry=?";
            Object[] params = new Object[] {
                industrys.get(i),
            };
            Double weight = jdbcTemplate.queryForObject(sql, params,Double.class);
            // 保留四位小数
            String tmp = String.format("%.4f", weight);
            weight = Double.parseDouble(tmp);
            CSI300DistVO entity = new CSI300DistVO(industrys.get(i), weight);
            csi300DistVOList.add(entity);
            log.info(entity.toString());
        }
        return csi300DistVOList;
    }

 然后通过get请求提供查询服务

    @RequestMapping("/queryDist")
    
  • 20
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值