mysql如何写函数提取某个字段内JSON的值,double强转int,

废话不说看代码

<select id="selectByDim" resultType="org.springblade.bigscreen.vo.RightCenterVO">

        SELECT
            dim,
        CAST(avgScore AS SIGNED) AS avgScore
        FROM
            (
                SELECT
                    dsx.batch_id AS batchId,
                    dsx.site_code AS siteCode,
                    dsx.site_name AS site_name,
                    1 AS dim,
                    AVG(JSON_EXTRACT(dsx.statistical, '$."T人格特质"')) AS avgScore
                FROM
                    t_gauge_test AS dsx
                        INNER JOIN t_tester AS dst ON dsx.user_id = dst.id_no
                WHERE
                    dsx.is_deleted = 0
                  AND dst.is_deleted = 0
                  AND JSON_VALID(dsx.statistical)
                GROUP BY
                    dsx.batch_id,
                    dsx.site_name,
                    dsx.site_code

                UNION ALL

                SELECT
                    dsx.batch_id AS batchId,
                    dsx.site_code AS siteCode,
                    dsx.site_name as site_name,
                    2 AS dim,
                    AVG(JSON_EXTRACT(dsx.statistical, '$."T心理健康"')) AS avgScore
                FROM
                    t_gauge_test AS dsx
                        INNER JOIN t_tester AS dst ON dsx.user_id = dst.id_no
                WHERE
                    dsx.is_deleted = 0
                  AND dst.is_deleted = 0
                  AND JSON_VALID(dsx.statistical)
                GROUP BY
                    dsx.batch_id,
                    dsx.site_name,
                    dsx.site_code

                UNION ALL

                SELECT
                    dsx.batch_id AS batchId,
                    dsx.site_code AS siteCode,
                    dsx.site_name as site_name,
                    3 AS dim,
                    AVG(JSON_EXTRACT(dsx.statistical, '$."T压力应对"')) AS avgScore
                FROM
                    t_gauge_test AS dsx
                        INNER JOIN t_tester AS dst ON dsx.user_id = dst.id_no
                WHERE
                    dsx.is_deleted = 0
                  AND dst.is_deleted = 0
                  AND JSON_VALID(dsx.statistical)
                GROUP BY
                    dsx.batch_id,
                    dsx.site_name,
                    dsx.site_code

                UNION ALL

                SELECT
                    dsx.batch_id AS batchId,
                    dsx.site_code AS siteCode,
                    dsx.site_name as site_name,
                    4 AS dim,
                    AVG(JSON_EXTRACT(dsx.statistical, '$."T人际关系"')) AS avgScore
                FROM
                    t_gauge_test AS dsx
                        INNER JOIN t_tester AS dst ON dsx.user_id = dst.id_no
                WHERE
                    dsx.is_deleted = 0
                  AND dst.is_deleted = 0
                  AND JSON_VALID(dsx.statistical)
                GROUP BY
                    dsx.batch_id,
                    dsx.site_name,
                    dsx.site_code

                UNION ALL

                SELECT
                    dsx.batch_id AS batchId,
                    dsx.site_code AS siteCode,
                    dsx.site_name as site_name,
                    5 AS dim,
                    AVG(JSON_EXTRACT(dsx.statistical, '$."T适应能力"')) AS avgScore
                FROM
                    t_gauge_test AS dsx
                        INNER JOIN t_tester AS dst ON dsx.user_id = dst.id_no
                WHERE
                    dsx.is_deleted = 0
                  AND dst.is_deleted = 0
                  AND JSON_VALID(dsx.statistical)
                GROUP BY
                    dsx.batch_id,
                    dsx.site_name,
                    dsx.site_code
            ) AS subquery  where subquery.batchId= #{batchId} and subquery.siteCode in
            <foreach collection="siteCodes" item="siteCode" open="(" separator="," close=")">
                #{siteCode}
            </foreach>;

然后这是上级的mapper

    List<RightCenterVO> selectByDim(Long batchId, List<String> siteCodes);

这个sql包含提取json,子查询,分组,list循环,小数转换成int

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值