数据库常见SQL函数,语法总结
在这里插入代码片
desc 库名.表名【可查看字段解释】 可下载【数据量大可用CVS格式;数据量小可下载excel格式;CVS格式中文会显示乱码,需转化成excel格式】;
CVS乱码转化excel 【Hive 下载CSV 表格拖进Text 选择(File)——(Save with Encoding)——(UTF-8 with BOM) 即可 ;
代码中:中文必须加``;
每张表都需要加上【 where(表缩写. 或什么都不写)pt=regexp_replace(date_add(CURRENT_TIMESTAMP,-1),'-','') 】;
1、 select distinct (字段)
from (表名)
查询字段
2、 desc '表名'
(查询具体字段)
3、【 row_number()over(partition by 列名 order by 列名) 】 as rank(排序)
order by [XX] desc 降序
order by [XX] asc 升序
若没有desc或asc 则默认升序
例、row_number()over(partition by tod.student_id,tod.scheduled_sales_id order by tod.scheduled_date_time asc) as rank
释、根据 tod.scheduled_date_time 对tod.student_id,tod.scheduled_sales_id 进行升序排序
order by 对所取字段进行排序
4、substring(book_date_time,1,10)
释:1为从第几位数取;10为取几位数
5、MAX(ldh.assign_time) AS 最近分配时间
date_sub(next_day(current_date(),'MO'),14)--上周一
date_sub(next_day(current_date(),'MO'),7)--这周一
t_month=substring(FROM_UNIXTIME(UNIX_TIMESTAMP()),1,7)--当前月份
6、 可直接用的时间公式:
select date_sub(next_day(current_date(),'MO'),14) --上周一
select date_sub(next_day(current_date(),'MO'),7) --这周一
select FROM_UNIXTIME(UNIX_TIMESTAMP()) --当前时间
select substring(FROM_UNIXTIME(UNIX_TIMESTAMP()),1,7) --当前月份
select trunc(current_timestamp(),'MM') --目前所属月月初
select trunc(date_add(CURRENT_TIMESTAMP,-1),'MM') --昨天所属月月初
select trunc(add_months('2016-11-02',-1),'MM') --上月月初
,datediff(s.paid_date, k.trial_date) as time_difference -- 计算两个时间差值
,select explode(split(字段, ','))t-- t临时表名一行变多行
,lateral view explode (split(字段, ',')) a2 as split_content_id-- 临时建立表a2,将content_id一行分多行
select from_unixtime(unix_timestamp(),'yyyy-MM-dd 00:00:00')-- 今天00:00:00
select from_unixtime(cast(cast(class_time as double)/1000 as bigint),'yyyy-MM-dd HH:mm:ss')-- 字符串13位更改
IF(pay_time=DATE_FORMAT(now(),'%Y-%m-%d')
7、常见字符串整理
select COALESCE(user_id,out_order_id) -- 如果user_id为null,则用out_order_id来进行填补
--如果expression不为空值则返回expression;
--否则判断value1是否是空值,如果value1不为空值则返回value1;否则判断value2是否是空值,
select SELECT CAST("2017-08-29" AS DATE) -- -> 2017-08-29 转换数据类型
select IF(expr,v1,v2)
--SELECT IF(1 > 0,'正确','错误') ->正确