2

leftouterjoin

mysql 查找在另一张表不存在的数据

mysql 查找在另一张表不存在的数据 - 走看看

有三种方法:

1. SELECT * FROM Call WHERE phone_number NOT IN (SELECT phone_number FROM Phone_book)

2. SELECT * FROM Call WHERE NOT EXISTS (SELECT * FROM Phone_book WHERE Phone_book.phone_number = Call.phone_number)

3. SELECT * FROM Call LEFT OUTER JOIN Phone_Book>

大厂数据开发老司机送给数据工程师的10条建议,建议先收藏再细品!

10、关联数据之前,先检查维度表,各维度的值是否有异常,比如null,空值,异常值等等。

9、进行聚合操作后,检查聚合后的数据值是否合理,比如sum求和后的值,找一些已有的数据做核对。

8、left join之后的数据是否有重复,关联字段是否存在一对多的情况,是否符合业务预期。

7、查看上下游指标间的关联关系,是否存在统计相加之后的值和前序依赖对应的不上。

6、重刷数据一定要先新建一个任务,特别是任务由于上有修改表结构导致的任务失败,新建任务,写入临时表进行数据核对后再刷新原任务运行后续依赖。

5、修改表、删除表之前一定要先备份,防止“删库跑路”情况出现。

4、烟囱式开发,同一个维度在整个数据平台中不一致,维度数据要跟主数据关联起来。

3、过度钻研数据处理技术,忽略业务逻辑,有时候优化一条SQL,也许只是业务逻辑的变通。

2、只管开发和运维任务,不总结。形成团队的wiki进行开发和运维问题处理知识总结,会大大提高团队问题处理效率。

1、忽略数仓对业务成功的支持,只关注效率上的提升,“黑猫白猫,只要抓住老鼠就是好猫”,没有被业务认可的数据团队,长久不了。#大数据# #数据开发# #程序员# #数据工程师#

50个常用sql语句(22——25)

22、查询如下课程成绩第 3 名到第 6 名的学生成绩单:企业管理(001),马克思(002),UML (003),数据库(004)

[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩

SELECT DISTINCT top 3

SC.S# As 学生学号,

Student.Sname AS 学生姓名 ,

T1.score AS 企业管理,

T2.score AS 马克思,

T3.score AS UML,

T4.score AS 数据库,

ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分

FROM Student,SC LEFT JOIN SC AS T1

ON SC.S# = T1.S# AND T1.C# = '001'

LEFT JOIN SC AS T2

ON SC.S# = T2.S# AND T2.C# = '002'

LEFT JOIN SC AS T3

ON SC.S# = T3.S# AND T3.C# = '003'

LEFT JOIN SC AS T4

ON SC.S# = T4.S# AND T4.C# = '004'

WHERE student.S#=SC.S# and

ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)

NOT IN

(SELECT

DISTINCT

TOP 15 WITH TIES

ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)

FROM sc

LEFT JOIN sc AS T1

ON sc.S# = T1.S# AND T1.C# = 'k1'

LEFT JOIN sc AS T2

ON sc.S# = T2.S# AND T2.C# = 'k2'

LEFT JOIN sc AS T3

ON sc.S# = T3.S# AND T3.C# = 'k3'

LEFT JOIN sc AS T4

ON sc.S# = T4.S# AND T4.C# = 'k4'

ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);

23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]

SELECT SC.C# as 课程ID, Cname as 课程名称

,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85]

,SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70]

,SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60]

,SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -]

FROM SC,Course

where SC.C#=Course.C#

GROUP BY SC.C#,Cname;

24、查询学生平均成绩及其名次

SELECT 1+(SELECT COUNT( distinct 平均成绩)

FROM (SELECT S#,AVG(score) AS 平均成绩

FROM SC

GROUP BY S#

) AS T1

WHERE 平均成绩 > T2.平均成绩) as 名次,

S# as 学生学号,平均成绩

FROM (SELECT S#,AVG(score) 平均成绩

FROM SC

GROUP BY S#

) AS T2

ORDER BY 平均成绩 desc;

25、查询各科成绩前三名的记录:(不考虑成绩并列情况)

SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数

FROM SC t1

WHERE score IN (SELECT TOP 3 score

FROM SC

WHERE t1.C#= C#

ORDER BY score DESC

)

ORDER BY t1.C#;

sql语法高级玩法:select count 可以跟 count(distinct xxx) 然后接group by ,再连left join, right join, 再接having 一起,完成复杂的数据条件过滤。

#Java#今天去了一家非外包公司,做电商的,上来给我来4道SQL题,我看完第一反应,就这?

结果做完3道题目有问题,其中有1道面试官一说我就反应过来了,另外2道涉及到了盲区

1.学生表跟学校表联查,要求显示学校每个学校的学生数量,学校没人也得显示,用left join连接,然后我大意了,写了个count,面试官问我count没什么问题吗?我马上反应过来count后面接1会把空的也算进计数,跟他说了,算是过关

2.查询列出学校名,男生人数,女生人数,写了个很复杂的SQL,他问我能不能简单点,涉及到了我的盲区,回家问百度才知道答案

3,查询出学校、学生对应关系,有的学生没有学校,有的学校没有学生也列出来,我用了个union,被他问了知不知道union和union all的区别

Mr.Darcy did something that may make Elizabeth happy.

CHAPTER 43

Mr.Darcy took her place by her niece, and they walked>

#今日阅读文章分享# Don't make these job interview mistakes. 职场英语:面试时应避免的错误!

1. Don't trash your old boss.别诋毁前上司。

First, don't bad-mouth your previous employer when asked why you left or are seeking a new job elsewhere.

"You should not throw your previous leader or company under the bus, even if it's true that you are leaving a toxic environment or horrible boss."

Instead, focus>

Excel常用公式(六)

文本处理类

1、=TEXT(10,"0000")

一句话介绍:按照指定的格式将数字10显示为0010

函数格式:TEXT(要处理的数据,格式代码)

2、=LEN(A1)

一句话介绍:得到A1单元格中数据的字符数

函数格式:LEN(要统计长度的数据或单元格)

3、=LENB(A1)

一句话介绍:得到A1单元格中数据的字节数

函数格式:LENB(要统计长度的数据或单元格)

4、=LEFT(A1,2)

一句话介绍:从A1左边截取两个字符

函数格式:LEFT(要截取的单元格或数,截取字数)

5、=LEFTB(A1,2)

一句话介绍:从A1左边截取两个字节

函数格式:LEFTB(要截取的单元格或数,截取字节数)

6、=RIGHT(A1,2)

一句话介绍:从A1右边截取两个字符

函数格式:RIGHT(要截取的单元格或数,截取字数)

7、=RIGHTB(A1,2)

一句话介绍:从A1右边截取两个字节

函数格式:RIGHTB(要截取的单元格或数,截取字节数)

8、=MID(A1,2,3)

一句话介绍:从A1右边截取两个字符

函数格式:MID(要截取的单元格或数,从第几个字开始,截取字数)

9、=MIDB(A1,2,3)

一句话介绍:从A1右边截取两个字节

函数格式:MIDB(要截取的单元格或数,从第几个字开始,截取字节数)

10、=FIND("A",A1,3)

一句话介绍:在A1单元格的第3个字开始找字母A,得到A在第几个字,区分大小写。

函数格式:FIND(找什么,在哪找,从第几个字开始找)

11、=FINDB("A",A1,3)

一句话介绍:在A1单元格的第3个字开始找字母A,得到A在第几个字,区分大小写。

函数格式:FINDB(找什么,在哪找,从第几个字开始找)

12、=SEARCH("A",A1,3)

一句话介绍:在A1单元格的第3个字开始找字母A,得到A在第几个字,不区分大小写。

函数格式:SEARCH(找什么,在哪找,从第几个字开始找)

13、=SEARCHB("A",A1,3)

一句话介绍:在A1单元格的第3个字开始找字母A,得到A在第几个字,不区分大小写。

函数格式:SEARCHB(找什么,在哪找,从第几个字开始找)

14、=SUBSTITUTE(B2,"2019年","",2)

一句话介绍:将B2单元格中的第2个2019年替换为空

函数格式:SUBSTITUTE(目标单元格,旧内容,新内容,替换第几个或全替换)

15、=REPLACE(F2,4,4,"****")

一句话介绍:将F2单元格中第4个字开始的4个字换成*

函数格式:REPLACE(原字符串,开始位置,字节个数,新字符串)

16、=REPLACEB(F2,4,5,"****")

一句话介绍:将F2单元格中第4个字开始的4个字换成*(以字节为单位)

函数格式:REPLACEB(原字符串,开始位置,字节个数,新字符串)

17、=REPT("ABC",5)

一句话介绍:将字符串ABC重复五次

函数格式:REPT(原字符串,重复次数)

18、=TRIM(A1)

一句话介绍:清理A1单元格中多余的空格

函数格式:TRIM(要处理的字符串)

19、=CLEAN(A1)

一句话介绍:删除A1单元格中所有非打印字符

函数格式:CLEAN(要处理的字符串)

20、=CHAR(65)

一句话介绍:得到系统代码65所对应的字符A

函数格式:CHAR(数字)

21、=CODE("A")

一句话介绍:得到字符A所对应的系统代码65

函数格式:CODE(字符)

22、=CONCATENATE(A2,"营业额",B2,"元")

一句话介绍:得到一个合并后的字符串

函数格式:CONCATENATE(字符串1,字符串2,……)

23、=PHONETIC(A1:C1)

一句话介绍:将单元格区域中的文本进行合并

函数格式:PHONETIC(单元格区域)

24、=CONCAT(A2:D2)

一句话介绍:将单元格区域中的内容进行合并

函数格式:CONCAT(单元格区域)

25、=TEXTJOIN("-",1,A2:D2)

一句话介绍:将单元格区域中的内容进行合并,并且以"-"分隔。

函数格式:TEXTJOIN(分隔符,是否忽略空单元格,合并内容1,合并内容2,……)

本文来自网络,不代表本站立场。转载请注明出处: https://tj.jiuquan.cc/a-2146246/
1
上一篇ie遇到问题需要关闭(ie异常关闭)
下一篇 爆笑小姐:程序员离职后锁硬盘

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: alzn66@foxmail.com

关注微信

微信扫一扫关注我们

返回顶部