前言:做为一名数据开发人员,难免在工作中遇到各种数据库的各种问题,下面总结如下,希望对遇到此类问题的各位同仁有所帮助,也希望大家多多指正和下方留言实际生产中遇到的关于数据库的各种疑难问题和解决方案,大家互相探讨学习

1 怎么进行行列转换?


将上面上图转换为下图形式

Oracle语法:
with temp as(
select ‘50923’ 总在位人数 ,‘4126’ 不在位人数,‘46797’ 在位人数 from dws_fr_qyjbxx_df
)
select num,sort from
temp
unpivot
(num for sort in (总在位人数,不在位人数,在位人数))t;
具体效果如下:

2 需求:需要两张表,这两张表没有关联,需要这两张表查出来的sql结果


法一:

法二:
select bzrs,tssj,(select xm from dws.dws_zrr_bzxx_df) xm from dws.dws_zrr_jzxx_df limit 3;
搞一个子查询(把B表的B1当做第四列) ,SELECT A1,A2,A3,(SELECT B1 FROM B) B1 FROM A
PS:不建议这样搞,写了个标量子查询,被同事发现会被喷的

法三:
select
t1.a1,t1.a2,t1.a3,t2.b1
from A t1
join B t2
on 1=1
结论:推荐第一种和第三种方法,首选第三种方法

3 就是原数据中6月22日没有这个数据,但是最后页面显示想显示这条数据为2021-06-22 西门入口2_门_1 0

解决思路如下:
SELECT to_char(generate_series(to_date(‘2021-01-01’,‘yyyy-mm-dd’), to_date(‘2022-01-01’,‘yyyy-mm-dd’), ‘1 day’),‘yyyy-mm-dd’) as rq;这句sql可以生成一个时间序列,然后以时间为主表,去关联数据;
以日期为主表,就会所有日期都有;需要把resourname对应的维度表也关联进去,日期先关联resourname,然后再关联数据表就有了,相当于就用到三张表,一张日期维度表,一张resourname维度表,一张数据表;以那两张维度表为主表,笛卡尔积后会罗列出所有维度组合,然后再去关联数据,没有的补0
最终结果截图如下:

4 union前后字段超过64个报错


错误原因分析:
是因为union是做了去重的,而hive的去重应该是用的group by的算法实现的
此场景延伸问题如下:
就是前面的表相当于一个拉链表(比如有数据 01 李三 02 李四),后面表是正常全量表(比如有数据 01 李三 02 李四 03王五),刚刚上面那个操作是想得到ID为01和02的这个人的ID,如果我用union all加group by 加count(aaa.id)>1是不等效操作了?跟union 加 group by 加count(aaa.id)>1;因为union更像是union all加group by的联合体,hive限制Grouping sets size不能超过64
解决方案如下:
想得到ID为01和02的这个人的ID:
select id from dwd_xcvtc.dwd_xxjs003_hz t1
where exists(select 1 from ods_xcvtc.ods_jzg_jzgjbxx_df t2 where t1.id=t2.id)
想拿03就用not exists
如果是只有ID相同,其他条件不同,需要再改下哪里,比如姓名变了,但是ID没变,而且确定ID一定不会变,比如01 李三 变为 01 李六这样
解决方案如下:

给这里拼条件就好了,如果要判断所有字段的话建议不要在这拼一大串条件了;比如你要判断后面五十几个字段有没有变化,你可以衍生一个字段,根据非ID那50个字段用MD5算法生成一个加密的字符串,判断那个字符串是否相等,MD5算法只要输入相同那输出必然相同,所以只要那些字段相同,那么通过MD5算法得出的结果必然是相同的

5 关于row_number窗口函数失效的问题


如果有分组,组内排序就是1

此处需要注意的是:先分组再排序是组内排序,比如你按照学号分组,因为一个人只有一条记录,所以排出来全都是1。还是要整理清楚需求,然后理解这个函数用法

6 怎么把一个SQL语句直接当做参数一样传到from之后,直接使用?

具体需求:
1 从aaa表存几个字段,字段名q为指标类型,字段名d为计算逻辑,就是form后面的部分
2 在bbb表进行指标计算,select * from (select d from aaa where q=‘班级’) t1
3 把查到的结果插入到ccc表
4 推送到业务库
解决思路
把字段名d当参数并可以直接使用做为SQL查询语句那就得存储过程或者Python代码或者Shell代码实现;所有维护在表中的东西都只能当一个字符串查出来,不能作为sql的关键字
具体解决:用Python代码+SQL代码实现

Hive、Oracle、PgSQL实际生产中遇到的问题相关推荐

  1. 【大数据实时数据同步】超级详细的生产环境OGG(GoldenGate)12.2实时异构同步Oracle数据部署方案(中)

    系列文章目录 [大数据实时数据同步]超级详细的生产环境OGG(GoldenGate)12.2实时异构同步Oracle数据部署方案(上) [大数据实时数据同步]超级详细的生产环境OGG(GoldenGa ...

  2. oracle的删除的row如何,Oracle 删除大表中部分数据

    需求: 项目中有一张表大概有7000多万条数据,造成表空间已满,需要清理部分数据,打算清理3000万. 2B 做法: delete from table_name where ID > '400 ...

  3. excel文件导入hive乱码_hive 从Excel中导入数据

    拿到Excel表后将数据保留,其他的乱七八糟都删掉,然后另存为txt格式的文本,用nodepad++将文本转换为UTF-8编码,此处命名为cityprovince.txt 将cityprovince. ...

  4. oracle集群+默认什么组,Oracle RAC 建设过程中必须应知、应做(上)

    原标题:Oracle RAC 建设过程中必须应知.应做(上) 作者:赵海,某城商行系统架构师,专注并擅长银行数据中心解决方案规划及设计.目前在社区会员关注TOP100排行榜中名列第三位,社区专业技能榜 ...

  5. c语言中floox的头文件,PC-1211袖珍计算机在合成氨厂生产中的应用 第五讲 循环语句(FOR-NEXT语句)...

    PC-1211袖珍计算机在合成氨厂生产中的应用 第五讲 循环语句(FOR-NEXT语句) 在化工生产中为了分析两个或两个以上参数对生产的影响往往需要进行某些有规律的重复计算.这些计算在程序中可以用赋值 ...

  6. COM:下一代微生物组技术在作物生产中的应用——局限性以及基于知识的解决方案的需求

    下一代微生物组技术在作物生产中的应用--局限性以及基于知识的解决方案的需求 Next generation microbiome applications for crop production - ...

  7. 2021-04-03生产中实体关系抽取一般采用什么方法?

    生产中实体关系抽取一般采用什么方法? 实体关系抽取有很多种方法,如基于特征向量的方法,基于核函数的方法,基于Bootstrapping的方法,基于深度学习的方法等等.看了很多这些方面的论文,各自评价不 ...

  8. 如何将TXT,EXCEL或CSV数据导入ORACLE到对应表中

    如何将TXT,EXCEL或CSV数据导入ORACLE到对应表中 2011-05-12 14:19 方法一,使用SQL*Loader      这个是用的较多的方法,前提必须oracle数据中目的表已经 ...

  9. 《潮流时装设计——世界顶级时装CAD制板技巧》——1.6 服装生产中各部位国际代号...

    本节书摘来异步社区<潮流时装设计--世界顶级时装CAD制板技巧>一书中的第1章,第1.6节,作者:延睿,陶娜,更多章节内容可以访问云栖社区"异步社区"公众号查看 1.6 ...

最新文章

  1. transform总结
  2. 理解卷积神经网络的局限
  3. 高性能 Java 应用层网关设计实践
  4. 第十六章 贪心算法——0/1背包问题
  5. IDEA中引用不到HttpServlet的解决方案
  6. No error message available, result code: E_FAIL(0x80004005)
  7. web td不对齐_珍稀干货!阿里 Web 音视频开发趟坑指南
  8. html div 球形,CSS3 简单的球形构造
  9. pycharm-python文件注释头
  10. 解决vs2005无法连接sql数据库问题
  11. 微信小程序地图实现展示路线路
  12. Elasticsearch(三)使用 Kibana 操作 ES
  13. 新时代火热技术栈:大数据->人工智能(AI)->区块链
  14. coldfusion php,PHP加密代码转换为ColdFusion
  15. java中arSigal_基于AR模型谱估计算法(Yule-Walker方法与Burg方法)的C++实现
  16. php对比两张数据表,【后端开发】PHP比较两个表不同数据
  17. 全网疯传,阿里 P8 技术官的架构笔记外泄:微服务分布式架构实践手册
  18. 突发!Google 最大数据中心发生爆炸,三名技术人员受伤
  19. 面对音乐行业解决音乐侵权严重痛点:启动数字化转型的设计思维工作坊
  20. 基于Pytorch的LSTM实战160万条评论情感分类

热门文章

  1. 用构建者的角度去学习一门技术
  2. MacBook Pro技巧
  3. 暴走英雄坛服务器维护时间,暴走英雄坛1.4.1版本维护公告 两段前期支线剧情更新...
  4. Oracle笔记 之 并行(parallel)操作(DQL,DML,DDL)
  5. 想做好用户画像?先学会这个基础操作
  6. 2020 54所提前批
  7. The Swift Programming Language 中文版(4.0)
  8. PHP冒泡排序算法和快速排序法
  9. 3D玻璃良品率不足五成 恐致三星S6 Edge供货危机
  10. 720全景图在线下载