资讯专栏INFORMATION COLUMN

clickhouse两个表关联后出现几十位的小数

waterc / 1153人阅读

摘要:问题在一次的数据查询的时候,反馈说列表中某些指标数据出现了几十位的小数。于是从接口入手开始跟数据,一直跟到数据源,发现几十位的小数点一直都在。发现产生的数据就带有几十位的小数点,详见图例。多带带执行子查询数据是正常的。

问题
在一次clickhouse的数据查询的时候,QA反馈说列表中某些指标数据出现了几十位的小数。开始以为是DataFormat时候bug
导致的。于是从接口入手开始跟数据,一直跟到数据源,发现几十位的小数点一直都在。最后打印了执行sql在DataGrip中执行。
发现sql产生的数据就带有几十位的小数点,详见图例。之前在clickhouse聚合查询的时候会出现小数后面数字浮动的情况,但
这种明显又是另一类的问题。
解决
于是开始分析这个几千行的sql,精简后其实主要是两个表的多带带分组聚合然后再进行关联。多带带执行子查询数据是正常的。
经过反复尝试后,**发现是 子查询 子查询 子查询 中使用了 select * 导致的,将这里换成具体查询的字段数据就正常了**。
这里使用*是因为报表是需要根据用户所选择的字段动态展示。
SQL
SELECT
    *
FROM
    (
        SELECT
            fieldsa,
            fieldsb,
            fields1c
        FROM
            table1
        WHERE
            condition1
        ORDER BY
            fields1c DESC
    )
ANY LEFT JOIN
    (
        SELECT
            * //将这里换成具体要查询的字段就可以了
        FROM
            (
                SELECT
                    fieldsa,
                    fieldsb,
                    round(sum(fields2c) / 1, 2) AS fields2c,
                    round(sum(fields2d) / 1, 2) AS fields2d
                FROM
                    table2
                WHERE
                    condition2
                GROUP BY
                    fieldsa,fieldsb
            )
        ALL FULL JOIN
            (
                SELECT
                    fieldsa,
                    fieldsb,
                    round(sum(fields3c) / 1, 2) AS fields3c,
                    round(sum(fields3d) / 1, 2) AS fields3d
                FROM
                    table3
                WHERE
                    condition3
                GROUP BY
                    fieldsa,fieldsb
            ) 
        USING 
            fieldsa,fieldsb
        WHERE
            condition4
    )
USING 
    fieldsa,fieldsb
图例

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38906.html

相关文章

  • clickhouse两个关联出现几十位的小数

    摘要:问题在一次的数据查询的时候,反馈说列表中某些指标数据出现了几十位的小数。于是从接口入手开始跟数据,一直跟到数据源,发现几十位的小数点一直都在。发现产生的数据就带有几十位的小数点,详见图例。单独执行子查询数据是正常的。 问题 在一次clickhouse的数据查询的时候,QA反馈说列表中某些指标数据出现了几十位的小数。开始以为是DataFormat时候bug 导致的。于是从接口入手开始跟数...

    Flands 评论0 收藏0
  • 基于开源应用快速构建HTAP系统

    摘要:利用快速构建系统。构建系统和的安装本文不再赘述,直接开始动手构建系统。分别为和,用于读写组,用于只读组。最后配置的监控服务可选,非必须至此,一个全部基于开源应用的简易系统就构建好了。利用ProxySQL、MySQL、ClickHouse快速构建HTAP系统。1. 关于ClickHouse企业里随着数据量的增加,以及日趋复杂的分析性业务需求,主要适用于OLTP场景的MySQL压力越来越大。多年...

    Tecode 评论0 收藏0
  • 深入Mysql - 谈谈我对数据类型的认识

    摘要:要确保没有低估需要存储的值的范围,更小是相对与数据类型的最大值范围来讲的。如果无法确定哪个数据类型是最好的,就选择你认为不会超过范围的最小类型。整数类型有两个类型的数字整数和实数。列默认为,这与其他的数据类型不一样。 简述 良好的逻辑设计和物理设计是高性能系统的基石,比如反范式设计可以加快某些类型的查询同时也会影响另外一些类型的查询效率,所以我们必须重视Mysql对于数据库的设计(本...

    zhisheng 评论0 收藏0
  • 深入Mysql - 谈谈我对数据类型的认识

    摘要:要确保没有低估需要存储的值的范围,更小是相对与数据类型的最大值范围来讲的。如果无法确定哪个数据类型是最好的,就选择你认为不会超过范围的最小类型。整数类型有两个类型的数字整数和实数。列默认为,这与其他的数据类型不一样。 简述 良好的逻辑设计和物理设计是高性能系统的基石,比如反范式设计可以加快某些类型的查询同时也会影响另外一些类型的查询效率,所以我们必须重视Mysql对于数据库的设计(本...

    SillyMonkey 评论0 收藏0
  • 深入Mysql - 谈谈我对数据类型的认识

    摘要:要确保没有低估需要存储的值的范围,更小是相对与数据类型的最大值范围来讲的。如果无法确定哪个数据类型是最好的,就选择你认为不会超过范围的最小类型。整数类型有两个类型的数字整数和实数。列默认为,这与其他的数据类型不一样。 简述 良好的逻辑设计和物理设计是高性能系统的基石,比如反范式设计可以加快某些类型的查询同时也会影响另外一些类型的查询效率,所以我们必须重视Mysql对于数据库的设计(本...

    junbaor 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<