位置: 编程技术 - 正文

Sequelize中用group by进行分组聚合查询(sequelize join)

编辑:rootadmin

推荐整理分享Sequelize中用group by进行分组聚合查询(sequelize join),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:sequelize.define,sequelize-cli,sequelize include,sequelize findall,sequelize include,sequelize include,sequelize使用,sequelize include,内容如对您有帮助,希望把文章链接给更多的朋友!

一、SQL与Sequelize中的分组查询

1.1 SQL中的分组查询

SQL查询中,通GROUP BY语名实现分组查询。GROUP BY子句要和聚合函数配合使用才能完成分组查询,在SELECT查询的字段中,如果没有使用聚合函数就必须出现在ORDER BY子句中。分组查询后,查询结果为一个或多个列分组后的结果集。

GROUP BY语法

在以上语句中:

聚合函数 - 分组查询通常要与聚合函数一起使用,聚合函数包括:

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的用户订单额:

生成的SQL语句如下:

使用聚合参数

除直接使用聚合函数外,也可以在findAll()等方法中,指定聚合查询相关参数实现聚合查询。查询时,同样可以通过通过options.attributes、options.attributes属性指定分组相关字段,并可以通过options.having指定过滤条件。与直接使用聚合函数查询不一样,通过参数构建聚合查询时,要以数组或对象形式设置options.attributes参数中的聚合字段,并需要通过sequelize.fn()方法传入聚合函数。

如,使用.findAll()查询订单数量大于1的用户订单额:

生成的SQL语句如下:

Sequelize中用group by进行分组聚合查询(sequelize join)

二、使用示例

现在订单表,数据如下:

2.1 简单使用

使用分组查询,统计每个客户的订单总额。

使用SQL语句,可以像下面这样查询:

而在Sequelize中可以像下面这样实现:

2.2 使用HAVING子句

统计订单数量大于1的用户的订单总金额。

使用SQL语句,可以像下面这样实现:

而使用Sequelize可以像下面这样查询:

2.3 使用WITH ROLLUP子句

WITH ROLLUP子句是MySQL 5.5+新增的特性,用于汇总统计结果。但本文发布时,Sequelize还不支持该特性。

增加总和统计列:

2.4 连接查询与分组

为了管理方便,我们会将不同的信息保存在不同的表中。如,我们会将订单信息放在一张表中,而将客户信息保存在另一张表中。对于存在关联关系的两张表,我们会使用连接查询来查找关联数据,在进行连接查询时,同样可以以使用聚合函数。

订单表如下:

客户表结构如下:

使用连接查询并分组查询,统计每个客户的订单总额。

使用SQL语句查询如下:

Sequelize中进行连接查询时,首先需要建立模型间的关联关系:

连接查询及分组:

总结

标签: sequelize join

本文链接地址:https://www.jiuchutong.com/biancheng/374111.html 转载请保留说明!

上一篇:解析NodeJs的调试方法(nodejs调试指南)

下一篇:解决Window10系统下Node安装报错的问题分析(windows 10一)

  • 代开普通发票需提供哪些材料
  • 增值税报表申报流程
  • 累计个税是每年累计吗
  • 购进生产设备的会计分录
  • 研发费用 会计核算
  • 未达起征点销售额是含税还是不含税
  • 产品入库实际成本是什么凭证
  • 资产剥离类型
  • 主营业务收入如何红冲
  • 事业单位开展活动的意义
  • 手写农产品发票有效吗
  • 未分配利润的计税基础是
  • 转让专利技术使用权属于销售无形资产吗
  • 小规模纳税人提供设计服务税率
  • 营改增后房地产企业增值税如何核算
  • 财务会计中的费用
  • 普票需要缴纳印花税吗
  • 本月进项税大于销项税不需要交税,电子税务局如何打印
  • 民间非营利组织会计科目
  • win11dns电脑服务器未响应如何处理
  • 收到投资方投入设备一台,投资合同约定其价值
  • word无法创建工作环境
  • php面向对象优点,缺点
  • apache运行php
  • 其它业务收入是什么科目
  • 摊销租赁费属于什么费用
  • 新空调的安装费是多少
  • PHP:imagecolorset()的用法_GD库图像处理函数
  • php上传文件到指定目录
  • 社保调整基数后 两个月没变化
  • 亚伯拉罕湖中的树,加拿大艾伯塔 (© Coolbiere/Getty Images)
  • 无纸化办理
  • 2021mathorcupc题答案
  • 公司可以不再提取法定公积金
  • Deep Learning Tuning Playbook(深度学习调参手册中译版)
  • opencv图像识别特定形状
  • 社保滞纳金计入个人账户吗
  • c语言realloc函数的用法
  • 高新企业奖励要交企业所得税吗
  • php的do while语句
  • 年数总和法怎么算年折旧额
  • 抚恤金发放标准2019年
  • 什么经营范围是营业执照
  • 资本公积的会计处理方法
  • 财务会计报表的使用者有哪些
  • linux安装ms
  • 原材料专票入库怎么入账
  • 报销招待费的会计科目
  • 消费税是怎样征收的
  • 增值税扣款了能退回吗?
  • 销售产品结转成本
  • 分公司交纳的管理费用
  • 其他应付现金流量表
  • 银行承兑汇票贴现利息计算公式
  • 函证核对法是什么
  • 企业注销未分配是从注册开始吗
  • 城市维护建设税的计税依据
  • 服务器上文件共享
  • 远程桌面连接 server 2016
  • Linux系统下Qt的基本安装和配置
  • 联想随笔
  • task host windows解决
  • windows8文件夹怎么加密
  • linux中安装jdk1.8
  • linux nyy
  • 微软禁用windows
  • win8iis安装配置
  • unityrpg
  • 都是惹得祸
  • jq读取json
  • 置顶在哪里
  • margin使用
  • 完美实现碳排放自主抵消的工厂叫什么
  • jquery页面关闭事件
  • python面积
  • 租房完税证明需要多长时间内的
  • 纳税服务主要职责
  • 为什么非贸易付不了款呢
  • 纳税申报2020年2月
  • 河南省土地使用税减免税优惠
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设