SQL
文章平均质量分 79
SQL
对许
这个作者很懒,什么都没留下…
展开
-
Spark中的JOIN机制
Apache Spark共提供了五种JOIN机制,其中常用的有三种:Shuffle Hash Join、Broadcast Hash Join及Sort Merge Join,它们都基于Hash Join,只不过需要在Hash Join前后进行Shuffle、Broadcast或Sort实际上,Hash Join算法来自于传统数据库,而Shuffle、Broadcast和Sort是大数据(数据仓库)在分布式场景下两者结合的产物。因此,我们也说大数据(数据仓库)是由传统数据库发展而来的。原创 2024-07-16 23:47:57 · 1204 阅读 · 1 评论 -
SQL经典面试题
查询2023-11-01及之后购买过商品C超过1次的用户(不限退款与否)查询每个用户购买每种商品的最后一次未退款的记录(结果仅包含表中字段)以上SQL若存在错误或者各位大佬有更好的方案,欢迎交流和指正。查询2023-11-01及之后每天的总订单数和退款率。查询购买过每种商品的总人数(不限时间、退款与否)查询日退款率前3的商品及对应退款率(不限时间)原创 2024-07-02 15:59:07 · 506 阅读 · 0 评论 -
SQL查询的执行顺序
SQL是基于集合理论的,集合不会预先对它进行排序,它只是成员的逻辑集合,成员的顺序是无关紧要的。需要注意的是,这些虚拟表隐含在SQL的执行过程中,对于我们来说是不可见的。实际上,ON和WHERE的最大区别在于,如果在ON中应用逻辑表达式,那么在第三步OUTER JOIN中还可以把过滤的行再次添加回来匹配。如果FROM子句中有多于两个表,那么就将vt3和第三个表连接计算笛卡尔乘积,生成虚拟表,即重复1-3步骤,最终得到一个新的虚拟表vt3。则只打印X班级的学生信息,其它班级的学生信息则会被永久过滤。原创 2024-06-27 16:15:36 · 777 阅读 · 0 评论 -
哪些情况下左联接的数据量比左表大?
本文主要探讨SQL和Pandas左连接数据量比左表大的问题。在某些情况下,执行左连接时,SQL和Pandas输出的结果会比左表数据量大。这是为什么呢?左连接是关系型数据库中最常见的连接之一。它的作用是从左表中取出所有的行,以及与右表匹配的所有行。如果某个行在右表中没有匹配到,则会在输出结果中以NULL的形式呈现1)左表与右表为一对多或多对多2)左表与右表关联键都存在空值NULL1)视情景删除或聚合右表中重复关联键的数据2)过滤表中关联键值为NULL的行。原创 2024-04-26 11:15:01 · 603 阅读 · 1 评论 -
SQL常用函数(以MySQL为例)
以下常用函数以MySQL为例,其它数据库类似。原创 2023-10-31 21:42:29 · 112 阅读 · 0 评论 -
SQL On Pandas最佳实践
Pandas在数据处理方面提供了几乎全部的类SQL查询操作API,例如代表SQL中的union合并去重。但PandasAPI不如直接的SQL简洁易读,例如,Pandas还无法替代的操作之一是非等连接(查询连接条件包含非等号,如大于号、小于号等),需要多步实现,这在SQL中非常简单,PandaSQL可以很好的解决这个问题PandaSQL是一个可以直接在Python中使用SQL语法查询Pandas数据框Dataframe的框架,PandaSQL底层调用PandasAPI。原创 2023-10-24 17:32:42 · 525 阅读 · 0 评论 -
Python操作数据库(MySQL、PostgreSQL、Oracle、MongoDB)
Python3连接MySQL主要有两种方式:mysql-connector模块和PyMySQL模块。: 比mysql-connector略快,兼容MySQLdb。Python3连接PostgreSQL:psycopg2模块。Python3连接MongoDB:pymongo模块。:Oracle官方支持、略慢、不兼容MySQLdb。原创 2023-08-20 17:35:51 · 326 阅读 · 0 评论 -
查询优化器:RBO与CBO
Calcite的产生背景在上世纪,关系型数据库系统基本主导了数据处理领域,但是在Google三篇创世纪论文发表后,大家开始意识到,一种适合所有场景的数据库是不存在的事实上,今天也确实是这样,许多特定场景下的数据处理系统已经成为主流,例如流处理领域的Flink、Storm,批处理领域的Hive、SparkSQL,文本搜索领域的Elasticsearch等。原创 2023-11-07 16:31:11 · 612 阅读 · 0 评论