首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2-SQL语言中的函数

分组函数(也叫统计函数,聚合函数,组函数),做统计使用 */ # 单行函数又分为:字符函数,数学函数,日期函数,其他函数,流程控制函数 # 字符函数 # LENGTH(str)函数返回字节长度,...DAY('2020-12-21'); # STR_TO_DATE(str,format) 将日期格式字符转换为指定个式的日期 SELECT STR_TO_DATE('03-11-2019','%d-..., 可以直接利用对应列筛选,利用where语句筛选,位置在group_by字句的前面 分组后的筛选:分组后的筛选是利用已经重新分配的组内的信息进行筛选,这些信息不直接存储于数据库中。...`department_id`; # 外连接 /* 用于查询一个表中有,另一个表中没有的记录 特点: 外连接的查询结果为主表中的所有记录 如果表中有和它匹配,则显示匹配的值 如果没有匹配值...,则显示null 左外连接,left左边的是主表 右外连接,left右边的是主表 左外和右外交换顺序,可以达到相同的效果 */ # 左外连接 SELECT b.name,boy.* FROM beauty

2.8K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    mysql基础

    三、日期和时间函数 1、获取日期、时间 函数 用法 CURDATE() ,CURRENT_DATE() 返回当前日期,只包含年、月、日 CURTIME() , CURRENT_TIME() 返回当前时间...(date) 将时间date以UNIX时间戳的形式返回 FROM_UNIXTIME(timestamp) 将UNIX时间戳的时间转换为普通格式的时间 3、日期的格式化与解析 函数 用法 DATE_FORMAT...) 返回日期字符串的显示格式 STR_TO_DATE(str, fmt) 按照字符串fmt对str进行解析,解析为一个日期 四、流程控制函数 if 函数 select if(10结果:小 方式一:case 函数 case 要判断的字段或表达式 when 常量1 then 要显示的值1或语句1; when 常量2 then 要显示的值2或语句2; … else 要显示的值...不可重复读:一个事务两次读取同一数据,在两次读取之间,另外一个事务将此数据修改或删除,则同一事务,两次读取结果不同。 幻读 ①幻读是在解决了不可重复读即在可重复读基础上发生的。

    7200

    分享几道LeetCode中的MySQL题目解法

    用户首次登录日期查询结果 用首次登录日期与原表左连接,连接条件为用户相同、且日期相差1天。因为可能存在用户不满足连续两天登录的情况,所以这里需要用左连接。...毫无疑问,思路仍然是先查找用户的首日信息,进而通过左连接查询次日登录情况,再根据日期分组聚合统计即可。...该题目看起来似乎是不难的,因为表中用户id、消费日期和平台是联合主键,所以每个用户在每个日期中最多有两条交易记录,此时对应查询目标结果中的both,否则就是单一的平台。但有很多细节需要考虑。...进而,将两部分结果进行左连接,并对数据加以判断填充即可。...自然想法是要统计数据库中用户在每次来访中各进行交易的次数,考虑到存在用户是来了之后但未进行实质交易的,还要将来访表和交易表进行左连接查询: 1select v.user_id, v.visit_date

    2K20

    Mysql数据库学习(三):表的crud操作、完整性约束、select各种查询

    内连接(等值连接):在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。... 内连接(自身连接) 外连接(左连接):返回包括左表中的所有记录和右表中联结字段相等的记录;即左外连接就是在等值连接的基础上加上主表中的未匹配数据(被连接 表字段为 NULL)。...外连接(右连接):返回包括右表中的所有记录和左表中联结字段相等的记录;即右外连接是在等值连接的基础上加上被连接表的不匹配数据(连接表字段为 NULL)。...自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。...(左连接) */ /* scott.sql并未设置emp表的外键为deptno,故这里可以插入在dept表中不存在的deptno值*/ /* 主要是为了演示左连接和右连接的区别 */ insert

    3.7K00

    MySQL入门学习笔记(上)

    SQL是一套标准,程序员主要学习的就是SQL语句,这个SQL在mysql中可以使用,同时在Oracle中也可以使用,在DB2中也可以使用。...可以使用str_to_date函数进行类型转换 语法格式: str_to_date('字符串日期', '日期格式') mysql的日期格式: %Y 年 %m 月 %d 日...%d-%m-%Y')); str_to_date函数可以把字符串varchar转换成日期date类型数据, 通常使用在插入insert方面,因为插入的时候需要一个日期类型的数据, 需要通过该函数将字符串转换成...如果你提供的日期字符串是这个格式,str_to_date函数就不需要了!!!...在实际开发中使用业务主键多,还是使用自然主键多一些? 自然主键使用比较多,因为主键只要做到不重复就行,不需要有意义。

    1.8K10

    MySql基础之DQL-数据查询语言

    除了查询满足条件的记录以外,外连接还可以查询某一方不满足条件的记录 内连接: 合并具有同一列的两个以上的表的行, 结果集中不包含一个表与另一个表不匹配的行 外连接: 两个表在连接过程中除了返回满足连接条件的行以外还返回左...:使用(+)创建连接 在 SQL92 中采用(+)代表从表所在的位置。...而且在 SQL92 中,只有左外连接和右外连接,没有满(或全)外连接。...) 将UNIX时间戳的时间转换为普通格式的时间 7.5、日期的格式化与解析 函数 用法 DATE_FORMAT(date,fmt) 按照字符串fmt格式化日期date值 TIME_FORMAT(time...,fmt) 按照字符串fmt格式化时间time值 GET_FORMAT(date_type,format_type) 返回日期字符串的显示格式 STR_TO_DATE(str, fmt) 按照字符串fmt

    15310

    MySQL基础

    关系型数据库:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。...() 返回当前时间 NOW() 返回当前日期和时间 YEAR(date) 获取指定date的年份 MONTH(date) 获取指定date的月份 DAY(date) 获取指定date的日期 DATE_ADD...左外连接: 查询左表所有数据,以及两张表交集部分数据。...注意: UNION ALL 会有重复结果,UNION 不会 联合查询比使用or效率高,不会使索引失效 子查询 SQL语句中嵌套SELECT语句,称谓嵌套查询,又称子查询。...常用操作符: 操作符 描述 IN 在指定的集合范围内,多选一 NOT IN 不在指定的集合范围内 ANY 子查询返回列表中,有任意一个满足即可 SOME 与ANY等同,使用SOME的地方都可以使用ANY

    1.9K10

    MySQL必知必会笔记(1)

    其他连接类型自然连接: R\Join S 外连接: 左外连接(left outer join): 以第一个关系(左表)为主,在第二个关系(右表)中根据匹配条件找到满足条件的元素,并把它们连接起来,如果右表中没有对应的元素...,则在相应位置上的值为NULL,左外连接的结果行数等于左表的行数 右外连接(right outer join):以第二个关系(右表)为主,在第一个关系(左表)中根据匹配条件找到满足条件的元素,并把他们连接起来...,如果左表中没有对应的元素,则在相应位置上的值为NULL,右外连接的结果行数等于右表的行数 全外连接(full join): 左右表匹配的数据 + 左表没有匹配到的数据 + 右表没有匹配到的数据。...保证使用正确的连接条件,否则将返回不正确的数据。应该总是提供连接条件,否则会得出笛卡儿积。 在一个连接中可以包含多个表,甚至对于每个连接可以采用不同的连接类型。...利用UNION,可把多条查询的结果作为一条组合查询返回,不管它们的结果中包含还是不包含重复。

    1.6K10

    【数据库】MySQL:从基础到高级的SQL技巧

    (六)使用DISTINCT去重查询 如果一个字段中存在重复值,DISTINCT 可以用来查询唯一值,去除重复记录。...它们通常与 GROUP BY 子句一起使用,常用于统计数据和汇总结果。常见的聚合函数有以下几种: (一)COUNT 功能: 计算满足条件的行数。...在数据库设计中,通常会把相关的数据分布在不同的表中,连接查询能够把这些表的数据组合起来,实现跨表查询。MySQL 支持几种类型的连接查询,常见的有内连接、外连接(左连接和右连接)、交叉连接等。...只有当员工和部门表的 department_id 匹配时,才会返回结果 (二)左连接 左连接返回左表的所有记录,即使右表没有匹配的记录。对于没有匹配的右表记录,结果中对应的列会显示为 NULL。...对于没有匹配的左表记录,结果中对应的列会显示为 NULL。 语法: SELECT column1, column2, ...

    13910

    MySQL基础

    (str,substr,len) 右填充 strcmp(str1,str2) 比较两个字符的大小 instr(str,substr) 获取 substr 在 str 中的第一次出现的索引 示例: CONCAT...方法 描述 now() 获取当前日趋–时间 curtime() 只有时间 curdate() 只有日期 date_format(date,格式) 格式日期为字符 str_to_date(str,格式)...将字符转换为日期 datediff(date1,date2) 获取两个日期之间的天差数 year(date) 获取年 month(date) 获取月 NOW SELECT NOW(); CURDATE...② 筛选条件分为两类 筛选的基表 使用的关键字 位置 分组前筛选 原始表 where group by 前面 分组后筛选 分组后的结果集 having group by 后面 三、执行顺序 ​ ①...on 连接条件 where 筛选条件 group by 分组后的筛选 order by 排序列表 特点: ​ ① 查询的结果 = 主表的所有的行,如果从表和它比配的将显示匹配行,如果从表没有匹配的则显示

    2.5K30

    面试过了!业内大厂MySQL笔试题回忆+拆解

    题意分析: 1.要查看的是每一天的情况,所以要以日期为维度进行汇总观测,也就是group by后面跟日期字段; 2.要看每天的注册用户数(来自用户表),每天的下单用户数(来自订单表),所以要将用户表和订单表做横向连接...如果两个表的时间范围保持一致,那直接做表连接没有问题,但如果时间范围不一致,比如用户表在6月20日没有注册量,在订单表6月20日有多笔订单,用户注册表在6月10日有多位用户注册,而订单表6月10日没有订单...而在MySQL里面只有左连、右连、内连三种连接方式,不管以何种方式做连接,总会丢失部分日期记录; 5.只有外连才会不丢失日期数据,而MySQL里面没有外连方式,这要怎么办?...需要注意的是,在将临时表table_date与table_user左连时,对应关系是一对多,生成的结果是一个多表,再与table_order左连,对应关系是多对多,多对多的情况下,数据一定是有重复的,所以需要去重处理...另外把没有结果的null替换成0(ifnull函数),最终代码如下: selecttable_date.reg_tm,ifnull(count(distinct table_user.user_id),

    1.4K41

    Pandas_Study02

    删除重复数据 对于数据源中的重复数据,一般来讲没有什么意义,所以一般情况下都会进行删除操作。 duplicated() duplicated 方法可以返回重复数据的分布情况,以布尔值显示。...补充: 内连接,对两张有关联的表进行内连接操作,结果表会是两张表的交集,例如A表和B表,如果是A 内连接(inner join)B表,结果表是以A为基准,在B中找寻A匹配的行,不匹配则舍弃,B内连接A同理...,和course表进行匹配,同时course表的数据会显示在choose表前 print course.merge(choose, how = "right") # choose表左外连接course,...和course表右外连接choose表结果一致,但choose表的数据显示在前 print choose.merge(course, how = "left") # 和course 左外连接 choose...结果一样,但每列数据的排列会有区别,因为结果表会先显示左表的结果 print choose.merge(course, how = "right") pandas 数据分组 1. groupby 方法

    20510

    Oracle数据库增删改查

    ,如果不满足条件的数据也显示出来,需要用到外连接查询,外连接查询又分为:左外连接查询和右外连接查询、全外连接查询 左外连接查询:可以让左表不满足条件的数据也显示 右外连接查询:可以让右表不满足条件的数据也显示...全外连接查询:可以让左表和右边不满足条件的数据都显示出来 DEMO:使用左外连接对上个DEMO进行处理 以上实现了左外连接查询,发现了左外连接查询的(+)是放到右边的,查询结果是:左表中不满足条件的张三信息也显示了...3、可以在过滤条件中使用(+)来实现左或者右外连接查询,但是这种方式是Oracle特有的方式,在mysql中不能使用 内连接查询的其他实现方式 在上面我们知道了多表查询就是内连接查询,内连接查询的特征是...,此时需用到HAVING子句,HAVING子句常常和GROUP BY 一块使用,用于判断过滤的作用 使用HAVING 子句进行改进 HAVING子句 HAVING子句是对分组统计函数统计出的结果进行过滤的子句...WHERE子句在GROUP BY 子句之前执行,不能在WHERE 子句中使用统计函数 HAVING子句在GROUP BY 子句之后执行,可以在HAVING子句中对统计函数进行过滤 子查询 子查询就是讲一个

    1.6K10

    SQL系列(一)快速掌握Hive查询的重难点

    虽然Hive函数众多,但很多函数的使用频率极低,因此本文也只介绍高频、重点的函数,其余函数在需要用到的时候可以在Hive UDF手册[2]上查找使用,本文介绍的函数同样也是摘自于此,并对必须掌握的进行了加粗处理...尤其是正则替换和正则提取,在日常业务中使用频率极高,所以掌握一定的正则知识是必要的。限于篇赋,这两点在后续的SQL实战中再做详细介绍。...当天时间戳 string add_months(string start_date, int num_months) 计算日期增加num_months月后的日期 当start_date为月末时,计算结果同样为月末...当然,开发UDF是需要找数仓帮忙的。有问题,找数仓准行~ group强化 相信大家在Excel(或Tableau)中做数据透视表的时候,可以对任意维度的数据进行聚合。...因此在实际操作中,在做group 强化之前,应将明细数据中每个维度的NULL值进行替换为'未知',用于标记维度本身的取值;group 强化之后,应将每个维度的NULL值再进行替换为'全部',用以标记group

    3.1K22

    【数据库系列】你想要的sql全都有plus

    t_table_info a inner join t_table_info_v2 b on a.id = b.id; -- 外连接-左连接:以左表为基准,右表的列为null select * from...t_table_info a left join t_table_info_v2 b on a.id = b.id; -- 外连接-右连接:以右表为基准,左表的列为null select * from...t_table_info a right join t_table_info_v2 b on a.id = b.id; -- 交叉连接:交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。...(date, format)函数用于以不同的格式显示日期/时间数据,date是日期列,format是格式 select date_format(now(),'%y-%m-%d'); -- str_to_date...select datediff('2022-12-31',now()); -- 加减某个时间间隔函数date_add()与date_sub() -- date_add('某个日期时间',interval

    47620

    SQL | 数据分析面试必备SQL语句+语法

    full outer join: 全连接,包含两个表的连接结果,如果左表缺失或者右表缺失的数据会填充NULL。 ?...—— 聚合函数和group by -- 统计不同性别(F、M)中,不同的id个数 select count(distinct id) from table_1 group by sex -- 其它的聚合函数例如...rank()排序相同时会重复,总数不会变 ,意思是会出现1、1、3这样的排序结果; dense_rank() 排序相同时会重复,总数会减少,意思是会出现1、1、2这样的排序结果。...select datediff ('2016-12-30','2016-12-29'); -- 得到 "1" to_date函数可以把时间的字符串形式转化为时间类型,再进行后续的计算; 常用的日期提取函数包括...date_add(startdate,days) 返回开始日期startdate增加days天后的日期。 4.

    3.1K41

    JAVA中SQL查询语句大全,select多表查询,各种查询

    提示: distinct用于剔除重复值 select distinct dept from emp; where子句查询 对表中的所有记录进行筛选、过滤使用where子句,下面的运算符可以在 WHERE...) (3)now() – 返回当前日期+时间(年月日 时分秒) (4)date_add()、date_sub() – 增加/减少日期 (5)year()、month()、day()、hour()、...多表连接查询 连接查询:将两张或者两张以上的表,按照指定条件查询,将结果显示在一张表中。 多张表查询的语法: select... from A, B... where......外连接查询 1.左外连接查询 显示左侧表中的所有记录,如果在右侧表中没有对应的记录,则显示为null 语法: select ... from a left join b on(a.id=b.xid...=d.id group by e.dept_id; 7、(自连接查询)列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称。

    2.2K30
    领券