CUBRID学习笔记 41 sql语法之groupby 等

时间:2021-10-20 08:30:52

cubrid的中sql查询语法groupby


GROUP BY ... HAVING Clause

按dept_no分组

SELECT dept_no, avg(sales_amount)

FROM sales_tbl

GROUP BY dept_no;

分组前先执行条件比较

SELECT dept_no, avg(sales_amount)

FROM sales_tbl

WHERE sales_amount > 100

GROUP BY dept_no;

分组后,having操作

SELECT dept_no, avg(sales_amount)

FROM sales_tbl

WHERE sales_amount > 100

GROUP BY dept_no HAVING avg(sales_amount) > 200;

使用别名

SELECT dept_no AS a1, avg(sales_amount) AS a2

FROM sales_tbl

WHERE sales_amount > 200 GROUP

BY a1 HAVING a2 > 200

ORDER BY a2;

WITH ROLLUP 分组后统计(没有用过)

SELECT dept_no AS a1, name AS a2, avg(sales_amount) AS a3

FROM sales_tbl

WHERE sales_amount > 100

GROUP BY a1, a2 WITH ROLLUP;

GROUP BY 排序

SELECT *

FROM sales_tbl

ORDER BY dept_no DESC, name ASC;

null排在前面还是后面

SELECT * FROM tbl ORDER BY b NULLS FIRST;

SELECT * FROM tbl ORDER BY b NULLS LAST;

limit 分页

SELECT t1.*

FROM (SELECT * FROM sales_tbl AS t2 WHERE sales_amount > 100 LIMIT 5) AS t1

LIMIT 1,3;

等同

SELECT t1.*

FROM (SELECT * FROM sales_tbl AS t2 WHERE sales_amount > 100 LIMIT 5) AS t1

LIMIT 3 OFFSET 1;

join 查询

1 Inner Join

SELECT DISTINCT h.host_year, o.host_nation

FROM history h INNER JOIN olympic o ON h.host_year = o.host_year AND o.host_year > 1950;

等同

SELECT DISTINCT h.host_year, o.host_nation

FROM history h, olympic o

WHERE h.host_year = o.host_year AND o.host_year > 1950;

2 Outer Join

SELECT DISTINCT h.host_year, o.host_year, o.host_nation

FROM history h RIGHT OUTER JOIN olympic o ON h.host_year = o.host_year

WHERE o.host_year > 1950;

SELECT DISTINCT h.host_year, o.host_year, o.host_nation

FROM olympic o LEFT OUTER JOIN history h ON h.host_year = o.host_year

WHERE o.host_year > 1950;

SELECT DISTINCT h.host_year, o.host_year, o.host_nation

FROM history h, olympic o

WHERE o.host_year = h.host_year(+) AND o.host_year > 1950;

SELECT DISTINCT h.host_year, o.host_year, o.host_nation

FROM olympic o LEFT OUTER JOIN history h ON h.host_year = o.host_year AND o.host_year > 1950;

3 CROSS JOIN

SELECT DISTINCT h.host_year, o.host_nation

FROM history h CROSS JOIN olympic o;

等同

SELECT DISTINCT h.host_year, o.host_nation

FROM history h, olympic o;

子查询

单行子查询

SELECT h.host_year, (SELECT host_nation FROM olympic o WHERE o.host_year=h.host_year) AS host_nation,

h.event_code, h.score, h.unit

FROM history h;

多行子查询

SELECT name, capital, list(SELECT host_city FROM olympic WHERE host_nation = name) AS host_cities

FROM nation;

结果

name capital host_cities

'Somalia' 'Mogadishu' {}

'Sri Lanka' 'Sri Jayewardenepura Kotte' {}

'Sao Tome & Principe' 'Sao Tome' {}

...

'U.S.S.R.' 'Moscow' {'Moscow'}

'Uruguay' 'Montevideo' {}

'United States of America' 'Washington.D.C' {'Atlanta ', 'St. Louis', 'Los Angeles', 'Los Angeles'}

'Uzbekistan' 'Tashkent' {}

'Vanuatu' 'Port Vila' {}

values函数

类似自定义了两列

SELECT a.*

FROM athlete a, (VALUES ('Jang Mi-Ran', 'F'), ('Son Yeon-Jae', 'F')) AS t(name, gender)

WHERE a.name=t.name AND a.gender=t.gender;

结果

code name gender nation_code event

    21111  'Jang Mi-Ran'       'F'      'KOR'              'Weight-lifting'
21112 'Son Yeon-Jae' 'F' 'KOR' 'Rhythmic gymnastics'

for updae 为了更新或者删除,锁定前面查询出的结果

只有引用的表和视图被锁定

不能在子查询中使用,但是可以引用子查询

不能在包含group by ,distinct 或者汇总函数的sql声明中使用

不能引用union

CREATE TABLE t1(i INT);

INSERT INTO t1 VALUES (1), (2), (3), (4), (5);

CREATE TABLE t2(i INT);

INSERT INTO t2 VALUES (1), (2), (3), (4), (5);

CREATE INDEX idx_t2_i ON t2(i);

CREATE VIEW v12 AS SELECT t1.i AS i1, t2.i AS i2 FROM t1 INNER JOIN t2 ON t1.i=t2.i;

SELECT * FROM t1 ORDER BY 1 FOR UPDATE;

SELECT * FROM t1 ORDER BY 1 FOR UPDATE OF t1;

SELECT * FROM t1 INNER JOIN t2 ON t1.i=t2.i ORDER BY 1 FOR UPDATE OF t1, t2;

SELECT * FROM t1 INNER JOIN (SELECT * FROM t2 WHERE t2.i > 0) r ON t1.i=r.i WHERE t1.i > 0 ORDER BY 1 FOR UPDATE;

SELECT * FROM v12 ORDER BY 1 FOR UPDATE;

SELECT * FROM t1, (SELECT * FROM v12, t2 WHERE t2.i > 0 AND t2.i=v12.i1) r WHERE t1.i > 0 AND t1.i=r.i ORDER BY 1 FOR UPDATE OF r;

CUBRID学习笔记 41 sql语法之groupby 等的更多相关文章

  1. CUBRID学习笔记 41 sql语法之select

    cubrid的中sql查询语法 SELECT [ ] [{TO | INTO} ][FROM ] [WHERE ][GROUP BY {col_name | expr} [ASC | DESC], . ...

  2. CUBRID学习笔记 18 sql语句的预处理(类似存储过程)

    定义预处理  类似sqlserver的存储过程 语法 PREPARE stmt_name FROM preparable_stmt 说明 PREPARE 关键字 stmt_name 预处理语句的名字 ...

  3. CUBRID学习笔记 19 sql语句1

    创建 欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com . 过错 create table tableName (字段名 字段类型 pr ...

  4. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  5. SQL反模式学习笔记21 SQL注入

    目标:编写SQL动态查询,防止SQL注入 通常所说的“SQL动态查询”是指将程序中的变量和基本SQL语句拼接成一个完整的查询语句. 反模式:将未经验证的输入作为代码执行 当向SQL查询的字符串中插入别 ...

  6. ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现

    ASP.NET MVC 学习笔记-2.Razor语法   1.         表达式 表达式必须跟在“@”符号之后, 2.         代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...

  7. python3.4学习笔记(一) 基本语法 python3不向下兼容,有些语法跟python2.x不一样

    python3.4学习笔记(一) 基本语法 python3不向下兼容,有些语法跟python2.x不一样,IDLE shell编辑器,快捷键:ALT+p,上一个历史输入内容,ALT+n 下一个历史输入 ...

  8. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

  9. Java学习笔记之---基础语法

    Java学习笔记之---基础语法 一. Java中的命名规范 (一)包名 由多个单词组成时,所有字母小写(例如:onetwo) (二)类名和接口 由多个单词组成时,所有单词首字母大写(例如:OneTw ...

随机推荐

  1. python实现自动输入命令回车操作

    苦逼的在sf上等了一天(问题链接),都没人来解答,只好自己想办法,东平西凑还是勉强实现了,记录一下: 安装完python2.7后,在cmd命令行输入python回车,后出现python相关的提示信息, ...

  2. Scrum4.0+5.0

    1.题目: 1.准备看板. 形式参考图4. 2.任务认领,并把认领人标注在看板上的任务标签上. 先由个人主动领任务,PM根据具体情况进行任务的平衡. 然后每个人都着手实现自己的任务. 3.为了团队合作 ...

  3. char与byte差异

    很多人刚开始学习(包含I,我已经学会了一年多java该)肯会char和byte怀疑这两个数据类型,相互混淆.今天,大量的信息专门搜索,至byte和char两个数据类型进行了总结和比较.第一批成果与大家 ...

  4. CUDA 编程

    作者:MingChaoSun 原文:https://blog.csdn.net/sunmc1204953974/article/details/51000970 一.CPU和GPU 上图是CPU与GP ...

  5. CMD下进入MYSQL的命令

    CMD下进入MYSQL的命令 mysql -h localhost -u root -p 切到MYSQL的bin目录下,输入上面命令,回车 然后输入密码 回车

  6. php 路途一点启示

    wo:  面试了很多说后台不适合女孩,我不相信,而且我还很笨 he:不是立马就能让别人认可你,其中过程要经历很多得,有时候也要换个方式的'' wo: 我只是想用学的知识得到实践 he:那学习的过程不是 ...

  7. TensorFlow 官方文档中文版学习

    TensorFlow 官方文档中文版 地址:http://wiki.jikexueyuan.com/project/tensorflow-zh/

  8. Spring3数据库事务管理机制

    Spring对事务的解决办法其实分为2种:编程式实现事务,AOP配置声明式解决方案. http://jinnianshilongnian.iteye.com/blog/1496953 Spring提供 ...

  9. Python+Django+SAE系列教程12-----配置MySQL数据库

    由于SAE上支持的是Mysql,首先我们要在本地配置一个Mysql的环境 ,我在网上找到MySQL-python-1.2.4b4.win32-py2.7.exe,并双击 安装 选择典型安装 安装结束后 ...

  10. js调用activeX插件 报异常:TypeError:对象不支持 属性方法

    部署之后的js网页如果调用没有签名的 ocx/dll 插件的话会报异常:TypeError:对象不支持 “init” 属性方法 (init为插件公开的方法) 但是如果写一个htm本地文件去调用插件,和 ...