sql排序

【SQL.基础构建-第三节(3/4)】

安稳与你 提交于 2020-02-21 08:02:14
-- Tips:聚合和排序 -- 一、对表进行聚合查询 --  1.聚合函数 --    (1)5 个常用函数: --      ①COUNT:计算表中的记录(行)数。 --      ②SUM:计算表中数值列的数据合计值。 --      ③AVG:计算表中数值列的数据平均值。 --      ④MAX:求出表中任意列中数据的最大值。 --      ⑤MIN:求出表中任意列中数据的最小值。 --    (2)聚合:将多行汇总成一行。 --2.计算表中数据的行数  --示例 SELECT COUNT(*) -- *:参数,这里代表全部列 FROM dbo.Conbio; -------------------------------------- --3.计算 NULL 以外数据的行数 --  将 COUNT(*) 的参数改成指定对象的列,就可以得到该列的非 NULL 行数。 SELECT COUNT(Conbio_price2) FROM dbo.Conbio; --【备注】除了 COUNT 函数,其它函数不能将星号作为参数。 -- 【备注】COUNT 函数的结果根据参数的不同而不同。COUNT(*) 会得到包含 NULL 的数据行数,而 COUNT(<列名>) 会得到 NULL 之外的数据行数。 -------------------------------------- -

sql的查询语句的总结

我怕爱的太早我们不能终老 提交于 2020-02-21 07:10:35
一:基本的查询sql 1:基本常用查询 select * from student; --select select all sex from student; --all 查询所有 select distinct sex from student; --distinct 过滤重复 --count 统计 select count(*) from student; select count(sex) from student; select count(distinct sex) from student; selecttop 3 * from student; --top 取前N条记录 --aliascolumn name 列重命名 select id as 编号, name '名称', sex 性别 from student; --aliastable name 表重命名 select id, name, s.id, s.name from student s; --column 列运算 select (age + id) col from student; select s.name + '-' + c.name from classes c, student s where s.cid = c.id; 2:where筛选条件 1 --where 条件 2 select *

sql中对字段特殊排序

孤街浪徒 提交于 2020-02-17 11:25:31
当我们需要对某个字段进行特殊排序时,例如某个表的字段state的值域为01~10,需求是让查询出的数据按照这个字段02>04>05>其他 进行排序,可以使用如下排序 SELECT * FROM STATE t ORDER BY CASE WHEN t.state = '02' THEN 1 WHEN t.state = '04' THEN 2 WHEN t.state = '05' THEN 3 END 来源: CSDN 作者: 惊泣丶 链接: https://blog.csdn.net/qq_37985965/article/details/104353443

SQL Server 按照特定关键字排序 总结

偶尔善良 提交于 2020-02-17 07:58:06
建立测试TABLE1 create table table1 (id int,name char) insert into table1 select 1,'q' union all select 2,'r' union all select 3,'3' union all select 4,'5' 要求按指定的id顺序(比如2,1,4,3)排列获取TABLE1的数据 方法1: 使用union all,但是最多只能按256个关键字排序 select id,name from table1 where id=2 union all select id,name from table1 where id=1 union all select id,name from table1 where id=4 union all select id,name from table1 where id=3 方法2:在order by中使用case when select id ,name from t where id in (2,1,4,3) order by (case id when 2 then 'A' when 1 then 'B' when 4 then 'C' when 3 then 'D' end) *以上两种方法适合在数据量非常小的情况下使用 方法3: 使用游标和临时表

postgreSQL窗口函数总结

时光总嘲笑我的痴心妄想 提交于 2020-02-16 19:30:03
postgreSQL窗口函数总结 1 窗口函数说明 2 row_number/rank/dense_rank的区别 2 窗口函数语句 2 1 准备数据 3 1.1 创建测试的表test1 3 1.2 插入数据到test1表中 3 2 rank over 窗口函数使用 3 2.1 按照分区查看每行的个数 3 2.2 按照分区和排序查看每行的数据 4 2.3 查看每个部门最高的数据 4 3 row_number over 窗口函数的使用 5 3.1 显示数据的行号 5 3.1.1 顺序显示行号 5 3.1.2 获取一段内的数据 5 3.2 显示分区的个数 6 3.3 按照department分组wages排序显示数据 6 3.4 查看每个部门的最高的数据 7 4 dense_rank窗口函数使用 7 4.1 rank与dense_rank的区别 7 4.2 dense_rank 窗口函数的显示 7 4.3 rank 窗口函数的显示 8 5 rank/row_number/dense_rank比较 8 6 percent_rank 窗口函数的使用 9 6.1 计算分组中的比例 9 7 grouping sets 函数的使用 10 7.1 先按照wages分组再按照department进行分组 10 8 聚合函数+窗口函数使用 11 8.1 查看一个部门的个数 11 8.2

Sql建表和sql语句的注意事项

百般思念 提交于 2020-02-16 07:03:22
建表注意事项: 对于建表大家都不陌生,这里主要说明一下几点注意实现: 1、大数据字段最好剥离出单独的表,以便影响性能 2、使用varchar,代替char,这是因为varchar会动态分配长度,char指定为20,即时你存储字符“1”,它依然是20的长度 3、给表建立主键,看到好多表没主键,这在查询和索引定义上将有一定的影响 4、避免表字段运行为null,如果不知道添加什么值,建议设置默认值,特别int类型,比如默认值为0,在索引查询上,效率立显。 5、建立索引,聚集索引则意味着数据的物理存储顺序,最好在唯一的,非空的字段上建立,其它索引也不是越多越好,索引在查询上优势显著,在频繁更新数据的字段上建立聚集索引,后果很严重,插入更新相当忙。 6、组合索引和单索引的建立,要考虑查询实际和具体模式. SQL语句注意事项: 熟悉SQL的人,都会写SQL语句,但到底效率如何,十万以下的数据量,根本没任何区别,但一些基础性的东西,还是得点滴做起 1、where语句的书写,当有多个查询条件时,sql是按照从右往左的顺序进行执行,也就是说写在最后的条件会最早被执行,这就意味着过滤数据量最多的 添加应该写在最后,这样才能在性能上达到最优 2、join语句,如果A表1000w,B表30条记录,则应该是A join B,sql执行会以B为准去关联A,性能显著 3、表变量和临时表

大数据技术之Hive(Hive命令---DML数据操作与基本查询)

橙三吉。 提交于 2020-02-12 04:03:40
大数据技术之Hive(Hive命令) 1.DML数据操作 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select 1.1 数据导入 1.1.1 向表中装载数据(Load) 1.语法 hive> load data [local] inpath ‘/opt/module/datas/student.txt’ overwrite | into table student [partition (partcol1=val1,…)]; (1)load data:表示加载数据 (2)local:表示从本地加载数据到hive表;否则从HDFS加载数据到hive表 (3)inpath:表示加载数据的路径 (4)overwrite:表示覆盖表中已有数据,否则表示追加 (5)into table:表示加载到哪张表 (6)student:表示具体的表 (7)partition:表示上传到指定分区 2.实操案例 (0)创建一张表 create table student ( id string, name string ) row format delimited fields terminated by '\t' ; (1)加载本地文件到hive load data local inpath '/opt

数据库(二)

旧巷老猫 提交于 2020-02-10 16:37:41
作者:格物 https://shockerli.net/post/1000-line-mysql-note/ 选择类型 -- PHP角度 1. 功能满足 2. 存储空间尽量小,处理效率更高 3. 考虑兼容问题 -- IP存储 ---------- 1. 只需存储,可用字符串 2. 如果需计算,查找等,可存储为4个字节的无符号int,即unsigned 1) PHP函数转换 ip2long可转换为整型,但会出现携带符号问题。需格式化为无符号的整型。 利用sprintf函数格式化字符串 sprintf("%u", ip2long('192.168.3.134')); 然后用long2ip将整型转回IP字符串 2) MySQL函数转换(无符号整型,UNSIGNED) INET_ATON('127.0.0.1') 将IP转为整型 INET_NTOA(2130706433) 将整型转为IP 列属性(列约束) 1. PRIMARY 主键 - 能唯一标识记录的字段,可以作为主键。 - 一个表只能有一个主键。 - 主键具有唯一性。 - 声明字段时,用 primary key 标识。 也可以在字段列表之后声明 例:create table tab ( id int, stu varchar(10), primary key (id)); - 主键字段的值不能为null。 -

Oracle Sql 胡乱记

时间秒杀一切 提交于 2020-01-26 11:20:37
/ Oracle查询优化改写 / --1、coalesce 返回多个值中,第一个不为空的值 select coalesce('', '', 's') from dual; --2、order by -----dbms_random.value 生产随机数,利用随机数对查询结果进行随机排序 select * from emp order by dbms_random.value; --指定查询结果中的一列进行排序 select * from emp order by 4; -----order by 中认为null是最大所以null会排在第一或者最后一个 -----可以利用 nulls first 或者 nulls last 对null进行排序处理 select * from emp order by comm nulls first; select * from emp order by comm nulls last; ----- 多列排序,job 降序排列,如果工作一样,按照工号升序排列 select * from emp order by job desc, empno asc; ------依次按照job,empno降序排序 select * from emp order by job, empno desc; ------将empno = 7934 的排在第一位

SQL 优化原则

流过昼夜 提交于 2020-01-26 01:55:44
   一、问题的提出  在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是SQL语句的优 化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就可,而是要写出高质量的 SQL语句,提高系统的可用性。   在多数情况下,Oracle使用索引来更快地遍历表,优化器主要根据定义的索引来提高性能。但是,如果在SQL语句的where子句中写的 SQL代码不合理,就会造成优化器删去索引而使用全表扫描,一般就这种SQL语句就是所谓的劣质SQL语句。在编写SQL语句时我们应清楚优化器根据何种 原则来删除索引,这有助于写出高性能的SQL语句。   二、SQL语句编写注意问题   下面就某些SQL语句的where子句编写中需要注意的问题作详细介绍。在这些where子句中,即使某些列存在索引,但是由于编写了劣质的SQL,系统在运行该SQL语句时也不能使用该索引,而同样使用全表扫描,这就造成了响应速度的极大降低。    1. IS NULL 与 IS NOT NULL    不能用null作索引