SQL
寸草心2130
致力于轻微改变世界
展开
-
presto官方文档0.1(中文)和0.2(英文)
presto中文文档0.1presto英文文档0.2原创 2019-05-21 08:49:55 · 4008 阅读 · 0 评论 -
Presto时间和日期函数及运算符、日期时间比较
日期和时间运算符运算符例子结果+date ‘2012-08-08’ + interval ‘2’ day2012-08-10+time ‘01:00’ + interval ‘3’ hour04:00:00.000+timestamp ‘2012-08-08 01:00’ + interval ‘29’ hour2012-08-09 06:00:00...原创 2019-05-31 11:16:02 · 55028 阅读 · 1 评论 -
sql left join多表
sql left join多表表A---------------------------------关联第一张表B-----------------------关联第二张表cselect * fomr 表名A left join 表B on 表A字段=表B的id left join 表c on 表A字段=表c的id...原创 2019-06-13 13:18:34 · 583 阅读 · 0 评论 -
ORACLE自定义顺序排序
利用decode函数:select * from table_example order by decode(class,'C',1,'A',2,'D',3,'B',4)原创 2019-06-13 13:32:14 · 1720 阅读 · 0 评论 -
SQL自定义排序
方法一:比如需要对SQL表中的字段NAME进行如下的排序:张三(Z)李四(L)王五(W)赵六(Z)按照sql中的默认排序规则,根据字母顺序(a~z)排,结果为:李四 王五 赵六 张三自定义排序:order by charindex(NAME,‘张三李四王五赵六’)CHARINDEX函数返回字符或者字符串在另一个字符串中的起始位置。CHARINDEX函数调用方法如下:CHARIN...原创 2019-06-13 13:33:27 · 8119 阅读 · 2 评论 -
Oracle报错:不是单组分组函数解决
Oracle报错:不是单组分组函数解决报错:不是单组分组函数实例:select deptno,count(empno) from emp;报错:不是单组分组函数原因:1, 如果程序中使用了分组函数,则有两种情况可以使用:程序中存在group by,并指定了分组条件,这样可以将分组条件一起查询出来改为:select deptno,count(empno) from emp grou...原创 2019-06-10 09:25:09 · 3489 阅读 · 0 评论 -
用sql语句实现年龄分段统计
SELECT CASEWHEN (age >= 10 AND age <= 20) THEN '10-20'WHEN (age >= 21 AND age <= 30) THEN '21-30'ELSE '30-'END 'eag_layer', count(*) empsFROM address_bookGROUP B...原创 2019-07-03 18:47:02 · 7839 阅读 · 1 评论 -
oracle 分组后获取每组中某字段最大的记录
SELECT a."RN",a."ID",a."USERCODE",a."LOGINTIME",a."BZ",a."DQCODE" FROM (SELECT ROW_NUMBER() OVER(PARTITION BY usercode ORDER BY logintime DESC) rn,sys_userlogin_info.* FROM sys_userlogin_i...原创 2019-07-16 14:39:01 · 1585 阅读 · 0 评论 -
oracle count()函数对null值的处理
count()括号中如果是列名的话则不包含NULL如果是*字符或常量 则包括NULL原创 2019-07-23 18:22:15 · 4911 阅读 · 0 评论 -
Presto查询结果保留小数后面位数的方法
Presto中两个整数相除会结果为零当我们相除的两个数都为整数时,比如我想用两个count()结果相除,想保留n为小数实现方法select count(*)*1.00 / count(*) from student;结果就会自动保留两位小数,想要n位就1.后面n个零...原创 2019-05-24 11:03:34 · 13807 阅读 · 0 评论 -
SQL Union、Union all、Intersect、Minus作用
Union因为要进行重复值扫描,所以效率低。如果合并没有刻意要删除重复行,那么就使用Union All两个要联合的SQL语句 字段个数必须一样,而且字段类型要“相容”(一致);如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来(竖向合并,横向合并可以使用le...原创 2019-05-24 09:47:34 · 770 阅读 · 0 评论 -
SQL--变量
SQL-变量变量1.系统变量: 全局变量:作用域:服务器每次启动将为所有的全局变量赋初始值, 针对于所有的的会话(连接)有效,但不垮重启。 会话变量:仅仅针对当前的会话(连接)有效2.自定义变量: 用户变量 局部变量一. 系统变量即该变量由系统提供,不是用户定义,属于服务层面...原创 2019-05-23 16:25:32 · 384 阅读 · 0 评论 -
sql的行转列(PIVOT)与列转行(UNPIVOT)
在做数据统计的时候,行转列,列转行是经常碰到的问题。case when方式太麻烦了,而且可扩展性不强,可以使用 PIVOT,UNPIVOT比较快速实现行转列,列转行,而且可扩展性强一、行转列1、测试数据准备CREATE TABLE [StudentScores]( [UserName] NVARCHAR(20), --学生姓名 [Subject]...原创 2019-05-21 12:17:28 · 1550 阅读 · 0 评论 -
sql语句实现行转列的3种方法
前言一般在做数据统计的时候会用到行转列,假如要统计学生的成绩,数据库里查询出来的会是这样的,但这并不能达到想要的效果,所以要在查询的时候做一下处理。CREATE TABLE TestTable( [Id] [int] IDENTITY(1,1) NOT NULL, [UserName] [nvarchar](50) NULL, [Subject] [nvarchar](50) NULL...原创 2019-05-21 13:11:24 · 80322 阅读 · 2 评论 -
SQL查询结果自己添加一列自增字段
自行添加一列连续自增的ID,可用如下查询语句: (presto可用,亲测)SELECT Row_Number() over ( ) as init , * FROM 表名或使用关键字IDENTITY创建临时表SELECT IDENTITY(int,1,1) as Nid,* INTO #T FROM 表名 SELECT * FROM #T...原创 2019-05-21 17:21:43 · 20396 阅读 · 0 评论 -
Presto查询结果添加自增字段(唯一id)
SELECT Row_Number() over () as id , * FROM 表名(或者查询语句)原创 2019-05-21 17:24:26 · 4244 阅读 · 0 评论 -
Presto--数组函数和运算符
数组函数和运算符下标运营商:[]的[]操作者用于访问的阵列的元件和被索引从1开始:SELECT my_array [ 1 ] AS first_element连接运算符:||的||操作者用来连接与数组或相同类型的元素的数组:SELECT ARRAY [ 1 ] || ARRAY [ 2 ]; - [1,2] SELECT ARRAY [ 1 ] || 2...原创 2019-05-21 17:33:50 · 15406 阅读 · 1 评论 -
SQL查询去除重复行
可能会碰到以下几种重复情况:1.存在部分字段相同的纪录,即有唯一键主键ID(最常见情况)如果是这种情况的话用distinct是过滤不了的,这就要用到主键id的唯一性特点及group by分组(通过重复字段分组,只取重复行中的一个id达到不重复)select * from table where id in (select max(id) from table group by 重复的字段名1...原创 2019-05-21 18:17:03 · 18873 阅读 · 0 评论 -
Presto 除法/运算结果为0的原因及解决方法+cast用法
Presto 除法/运算结果为0的原因及解决方法当我想统计一个数据比例使用/ 结果为0,加号数据正常:语法:select sum(case when storecode = '15' then 1 else 0 end) / count(1) from orders;但是同样的语句在hive中执行是ok的在presto中:两个value相除,至少有一个为浮点数才能返回正确结果sele...原创 2019-05-23 11:29:47 · 15687 阅读 · 3 评论 -
ORACLE左连接丢记录
原因:在左连接中 where后不能有其他表的条件过滤 否则就不是单纯的左连接 是过滤连接了解决:把条件加到 on 后面select a.*,b.mm,b.nn from aaaaa aleft join bbbbb b on ( trim(a.num)=trim(b.num) and b.cc = '11')...原创 2019-07-24 15:51:59 · 955 阅读 · 0 评论