前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从左关联到数据维度的思考 原

从左关联到数据维度的思考 原

作者头像
申君健
发布2018-09-21 09:50:49
5240
发布2018-09-21 09:50:49
举报
文章被收录于专栏:前端侠2.0前端侠2.0

开始于同事提的问题

代码语言:javascript
复制
SELECT     A.code,
       ..........
       A.C_VALUE1     CVALUE1,
       A.C_VALUE2     CVALUE2,
       B.C_VALUE3     CVALUE3
  from (select t.code,
               t.c_value1,
               to_char(wm_concat(t.c_value2)) c_value2
          from t_ext t
         where t.c_data_type = 'RELA'
         group by t.code, t.c_value1) a
  left join t_ext b
    on a.code = b.code
   and a.c_value1 = b.c_value1
   and b.c_data_type = 'RELA'

同事针对上面SQL提出问题:

本来数据库是一个c_port_code 一个 c_value1 一个 c_value2存的, 现在想按照把 同一个 c_port_code 和 c_value1 的 c_value2合并为新的c_value2, 但是不想把c_value3和d_date放到分组里面,又需要这两个字段的值,导致重复数据了,该怎么去重呀

分析后回复如下:

在a 的结果集,用了group by ,其实相当于将表“降维”了。假如原来1000行,现在分组后结果集变为100行了。 在b 的结果集,没用group by ,它还是原来的维度。 当它们left join时,肯定会再扩展回来呀,升维成为1000行。

再解释一下维度: 比如 商品表是一维表, 商品名称: 价格,产地,类别,备注

商品日销售表是二维表:  商品名称,日期:  购买人,购买数量,结账口......

如果你对“商品日销售表" group by 一下。  就相当于降维,体现在主键列减少了 商品名称 :   总购买数量

前面你让两个维度不同的表进行join,肯定引起某个表的扩展呀!

最后解决:

  同事说他写了2个SQL来获取结果。

后续:

很多系统都会设计一个数据源的模块,往往止于”取到结果集“,其实拿到结果集只是第一步,更重要的是要反应出来结果集的行间的一个关系来。比较重要就是主键列,维度这些概念。

ORACLE本身也有维度的概念,我还没有把维度的概念理解透了,它直接关系着数据的汇总效率,数据视图的”上钻、下钻“,在echart里有上钻下钻功能,我不太清楚它是怎么维护数据关系的,有时间了要研究一下。

待研究的链接:

Oracle Dimension

http://blog.csdn.net/wanghai__/article/details/6609193

Echarts文档:

http://echarts.baidu.com/option.html#series-line.dimensions

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017/07/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开始于同事提的问题
  • 分析后回复如下:
  • 最后解决:
  • 后续:
  • 待研究的链接:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档