play 框架下 如何使用hive 自定义聚合函数查询语句,包括聚合函数

(window.slotbydup=window.slotbydup || []).push({
id: '2014386',
container: s,
size: '234,60',
display: 'inlay-fix'
&&|&&0次下载&&|&&总47页&&|
您的计算机尚未安装Flash,点击安装&
阅读已结束,如需下载到电脑,请使用积分()
下载:20积分
0人评价47页
相关分类推荐
0人评价2页
0人评价9页
0人评价3页
0人评价4页
0人评价40页
所需积分:(友情提示:大部分文档均可免费预览!下载之前请务必先预览阅读,以免误下载造成积分浪费!)
(多个标签用逗号分隔)
文不对题,内容与标题介绍不符
广告内容或内容过于简单
文档乱码或无法正常显示
文档内容侵权
已存在相同文档
不属于经济管理类文档
源文档损坏或加密
若此文档涉嫌侵害了您的权利,请参照说明。
我要评价:
下载:20积分您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
自定义查询SQL基础培训.ppt 86页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
需要金币:200 &&
你可能关注的文档:
·········
自定义查询SQL基础培训培训对象范围各分中心、联社负责自定义查询工作的同事。其他对自定义查询感兴趣的同事。2内容提纲ANSI、SQL、Select语法TeradataMPP架构和运行机制TeradataSQL的特征语法TeradataSQL常用函数SQL编写注意事项(重点)自定义查询实例分析(重点)3第一阶段(通用数据库基础语法)ANSI、SQL、Select语法SQL简介:ANSI、RDBMSSQL分类:DML&DDLSQLSELECT:SELECT…FROM…SQLDISTINCT:SELECTDISTINCT…FROM…SQLWHERE:SELECT…FROM…WHERE…SQLAND&OR:SELECT…FROM…WHERE…AND/OR…SQLORDERBY:SELECT…FROM…ORDERBY…SQLTOP:SELECTTOPnumber|percent…FROM…SQLLIKE:SELECT…FROM…WHERE…LIKE‘…%...’SQL通配符:%,-,[ABC],[!ABC]SQLIN:SELECT…FROM…WHERE…IN(…)SQLBETWEEN:SELECT…FROM…WHERE…BETWEEN…AND…SQLAlias(别名)SQLJOIN表连接SQLUNION和UNIONALLSQL聚合运算和GROUPBY、HAVINGTeradata数据分析函数RANK()、ROW_NUMBER()和QUALIFY4SQL简介SQL是用于访问和处理数据库的标准的计算机语言。什么是SQL?SQL指结构化查询语言SQL使我们有能力访问数据库SQL是一种ANSI的标准计算机语言(ANSI,美国国家标准化组织)SQL能做什么?SQL面向数据库执行查询SQL可从数据库取回数据SQL可在数据库中插入新的记录SQL可更新数据库中的数据SQL可从数据库删除记录SQL可创建新数据库SQL可在数据库中创建新表SQL可在数据库中创建存储过程SQL可在数据库中创建视图SQL可以设置表、存储过程和视图的权限5标准SQL&RDBMSSQL是一种标准-但是...SQL是一门ANSI的标准计算机语言,用来访问和操作数据库系统。SQL语句用于取回和更新数据库中的数据。SQL可与数据库程序协同工作,比如MSAccess、DB2、Informix、MSSQLServer、Oracle、Sybase以及其他数据库系统。不幸地是,存在着很多不同版本的SQL语言,但是为了与ANSI标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如SELECT、UPDATE、DELETE、INSERT、WHERE等等)。注释:除了SQL标准之外,大部分SQL数据库程序都拥有它们自己的私有扩展!RDBMSRDBMS指的是关系型数据库管理系统。RDBMS是SQL的基础,同样也是所有现代数据库系统的基础,比如MSSQLServer,IBMDB2,Oracle,MySQL以及MicrosoftAccess。RDBMS中的数据存储在被称为表(tables)的数据库对象中。表是相关的数据项的集合,它由列和行组成。6数据库表一个数据库通常包含一个或多个表。每个表由一个名字标识(例如“客户”或者“订单”)。表包含带有数据的记录(行)。下面的例子是一个名为&Persons&的表:下面的表包含三条记录(每一条对应一个人)和五个列(Id、姓、名、地址和城市)。SQL语句您需要在数据库上执行的大部分工作都由SQL语句完成。下面的语句从表中选取LastName列的数据:SELECTLastNameFROMP结果左侧:SQL语法概要IdLastNameFirstNameAddressCity1AdamsJohnOxfordStreetLondon2BushGeorgeFifthAvenueNewYork3CarterThomasChanganStreetBeijing7LastNameAdamsBushCarter注意事项1一定要记住,SQL对大小写不敏感!2SQL语句后面的分号,某些数据库系统要求在每条SQL命令的末端使用分号。分号是在数据库系统中分隔每条SQL语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的语句。DML和DDL8SQL分类:可以把SQL分为两个部分:数据操作语言(DML)和数据定义语言(DDL)。SQL(结构化查询语言)是用于执行查询的语法。但是SQL语言也包含用于更新、插入和删除记录的语法。查询和更新指令构成了SQL的DML部分:SELECT -从数据库表中获取数据(自定义查询只需关注这部分功能)UPDATE -更新数据库表中的数据DELETE -从数据库表中删除数据IN
正在加载中,请稍后...君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口Sequelize中用group by进行分组聚合查询
[摘要]一、SQL与Sequelize中的分组查询1.1SQL中的分组查询SQL查询中,通GROUPBY语名实现分组查询。GROUPBY子句要和聚合...
一、SQL与Sequelize中的分组查询
1.1 SQL中的分组查询
SQL查询中,通GROUP BY语名实现分组查询。GROUP BY子句要和聚合函数配合使用才能完成分组查询,在SELECT查询的字段中,如果没有使用聚合函数就必须出现在ORDER BY子句中。分组查询后,查询结果为一个或多个列分组后的结果集。 GROUP BY语法
SELECT 列名, 聚合函数(列名) FROM 表名 WHERE 列名 operator value GROUP BY 列名 [HAVING 条件表达式] [WITH ROLLUP] 在以上语句中: 聚合函数 - 分组查询通常要与聚合函数一起使用,聚合函数包括:
COUNT()-用于统计记录条数
SUM()-用于计算字段的值的总和
AVG()-用于计算字段的值的平均值
MAX-用于查找查询字段的最大值
MIX-用于查找查询字段的最小值 GROUP BY子名-用于指定分组的字段
HAVING子名-用于过滤分组结果,符合条件表达式的结果将会被显示
WITH ROLLUP子名-用于指定追加一条记录,用于汇总前面的数据 1.2 Sequelize中的分组查询
使用聚合函数 Sequelize提供了聚合函数,可以直接对模型进行聚合查询: aggregate(field, aggregateFunction, [options])-通过指定的聚合函数进行查询 sum(field, [options])-求和 count(field, [options])-统计查询结果数 max(field, [options])-查询最大值 min(field, [options])-查询最小值 以上这些聚合函数中,可以通过options.attributes、options.attributes属性指定分组相关字段,并可以通过options.having指定过滤条件,但没有直接指定WITH ROLLUP子句的参数。 如,使用.sum()查询订单数量大于1的用户订单额:
Order.sum('price', {attributes:['name'], group:'name', plain:false, having:['COUNT(?)>?', 'name', 1]}).then(function(result){ console.log(result); }) 生成的SQL语句如下:
SELECT `name`, sum(`price`) AS `sum` FROM `orders` AS `Orders` GROUP BY name HAVING COUNT('name')>1; 使用聚合参数 除直接使用聚合函数外,也可以在findAll()等方法中,指定聚合查询相关参数实现聚合查询。查询时,同样可以通过通过options.attributes、options.attributes属性指定分组相关字段,并可以通过options.having指定过滤条件。与直接使用聚合函数查询不一样,通过参数构建聚合查询时,要以数组或对象形式设置options.attributes参数中的聚合字段,并需要通过sequelize.fn()方法传入聚合函数。 如,使用.findAll()查询订单数量大于1的用户订单额:
Order.findAll({attributes:['name', [sequelize.fn('SUM', sequelize.col('price')), 'sum']], group:'name', having:['COUNT(?)>?', 'name', 1], raw:true}).then(function(result){ console.log(result); }) 生成的SQL语句如下:
SELECT `name`, sum(`price`) AS `sum` FROM `orders` AS `Orders` GROUP BY name HAVING COUNT('name')>1; 二、使用示例
现在订单表,数据如下:
> select * +---------+-------------+--------+-----------+---------------------+ | orderId | orderNumber | price | name | createdOn | +---------+-------------+--------+-----------+---------------------+ | 1 | 00001 | 128.00 | 张小三 |
10:12:49 | | 2 | 00002 | 102.00 | 张小三 |
10:12:49 | | 4 | 00004 | 99.00 | 王小五 |
10:12:49 | | 3 | 00003 | 199.00 | 赵小六 |
10:12:49 | +---------+-------------+--------+-----------+---------------------+ 2.1 简单使用
使用分组查询,统计每个客户的订单总额。 使用SQL语句,可以像下面这样查询:
> select name, SUM(price) from orders GROUP BY +-----------+------------+ | name | SUM(price) | +-----------+------------+ | 张小三 | 230.00 | | 王小五 | 99.00 | | 赵小六 | 199.00 | +-----------+------------+ 而在Sequelize中可以像下面这样实现:
Order.findAll({attributes:['sum', [sequelize.fn('SUM', sequelize.col('name')), 'sum']], group:'name', raw:true}).then(function(result){ console.log(result); }) 2.2 使用HAVING子句
统计订单数量大于1的用户的订单总金额。 使用SQL语句,可以像下面这样实现:
> select name, SUM(price) from orders GROUP BY name HAVING count(1)>1; +-----------+------------+ | name | SUM(price) | +-----------+------------+ | 张小三 | 230.00 | | 赵小六 | 199.00 | +-----------+------------+ 而使用Sequelize可以像下面这样查询:
Order.findAll({attributes:['sum', [sequelize.fn('SUM', sequelize.col('name')), 'sum']], group:'name', having:['COUNT(?)>?', 'name', 1], raw:true}).then(function(result){ console.log(result); }) 2.3 使用WITH ROLLUP子句
WITH ROLLUP子句是MySQL 5.5+新增的特性,用于汇总统计结果。但本文发布时,Sequelize还不支持该特性。 增加总和统计列:
> select name, SUM(price) from orders GROUP BY name WITH ROLLUP; +-----------+------------+ | name | SUM(price) | +-----------+------------+ | 张小三 | 230.00 | | 王小五 | 99.00 | | 赵小六 | 199.00 | | NULL | 528.00 | +-----------+------------+ 2.4 连接查询与分组
为了管理方便,我们会将不同的信息保存在不同的表中。如,我们会将订单信息放在一张表中,而将客户信息保存在另一张表中。对于存在关联关系的两张表,我们会使用连接查询来查找关联数据,在进行连接查询时,同样可以以使用聚合函数。 订单表如下:
> select * +---------+-------------+--------+------------+---------------------+ | orderId | orderNumber | price | customerId | createdOn | +---------+-------------+--------+------------+---------------------+ | 1 | 00001 | 128.00 | 1 |
10:12:49 | | 2 | 00002 | 102.00 | 1 |
10:12:49 | | 3 | 00003 | 199.00 | 4 |
10:12:49 | | 4 | 00004 | 99.00 | 3 |
10:12:49 | +---------+-------------+--------+------------+---------------------+ 客户表结构如下:
> select * +----+-----------+-----+---------------------+---------------------+ | id | name | sex | birthday | createdOn | +----+-----------+-----+---------------------+---------------------+ | 1 | 张小三 | 1 |
08:00:00 |
10:16:35 | | 2 | 李小四 | 2 |
08:00:00 |
10:16:35 | | 3 | 王小五 | 1 |
08:00:00 |
10:16:35 | | 4 | 赵小六 | 1 |
08:00:00 |
10:16:35 | +----+-----------+-----+---------------------+---------------------+ 使用连接查询并分组查询,统计每个客户的订单总额。 使用SQL语句查询如下:
> select c.name, SUM(o.price) AS sum from customers AS c INNER JOIN orders AS o ON o.customerId =c.id GROUP BY c. Sequelize中进行连接查询时,首先需要建立模型间的关联关系:
Order.belongsTo(Customer, {foreignKey: 'customerId'}); 连接查询及分组:
var include = [{ model: Customer, required: true, attributes: ['name'], }] Order.findAll({include:include, attributes:[[sequelize.fn('SUM', sequelize.col('price')), 'sum']], group:'Customer.name', having:['COUNT(?)>?', 'name', 1], raw:true, rollup:true}).then(function(result){ console.log(result); }) 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
编程开发子分类

我要回帖

更多关于 sql语句的聚合函数 的文章

 

随机推荐