位置: 编程技术 - 正文

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一)

  • 缴纳增值税账务处理
  • 利息税定义
  • 什么叫做增值税进项税额
  • 增值税专用发票是干什么用的
  • 当期可抵扣进项税额加计5%抵减应纳税额
  • 员工交通费补贴标准
  • 非同一控制下用什么法
  • 折让方式
  • 向一般纳税人销售劳保专用物品
  • 税务顾问费怎么做账务处理?
  • 税务局加强企业所得税管理
  • 工会费入账科目
  • 在建工程如何抵扣个税
  • 购进旅客运输服务抵扣会计分录
  • 增值税需要计提吗
  • 信托真实案例
  • 收到支票怎么处理
  • 总资产净利率与权益乘数的关系
  • mac硬盘的常见问题及解决
  • 资产负债表日后至财务报告批准报出日之间
  • 权益法下的相关税费计入
  • 当月制造费用转生产成本
  • 工业企业生产成本核算表
  • 默认网关不可用怎么修复
  • 财务指标有哪四类
  • Win11 Build 22000.348更新补丁KB5007262预览版发布(附更新修复内容汇总)
  • 已入账的发票跨月能用吗
  • 发票备注栏可以写详见清单吗
  • php中imagecreatefromjpeg
  • thinkphp exec
  • php中的pdo
  • 钢管扣件租赁公司社会实践报告怎么写范文
  • HTML 事件参考手册
  • python单链表的创建
  • 送货运输费用税率
  • 织梦标签理解
  • 应付利息怎么计算
  • 劳务外经证预缴税款
  • 发工资时代扣房贷怎么办
  • 确认预计负债的三个条件
  • 个人所得缴税租金怎么算
  • 政府会计制度下基建账
  • 长期应付款的会计编号
  • 出口收汇核销单的作用
  • 固定资产清理属于什么科目借方增加还是减少
  • 电商账务怎么做
  • 流动比率计算公式是年初还是年末
  • 未按期预缴企业社保
  • 发票有什么重要性
  • 缴纳社保需要办理什么手续
  • 期初借款余额计算公式
  • 行程单发票抬头是什么意思
  • 电子承兑汇票接收不了怎么办
  • 18年水利基金税率
  • 日记账的设置和登记
  • 在MySQL中使用通配符时应该注意的问题
  • sql语句行转列
  • 怎么提升命令提示符
  • linux 命令提示
  • 如何ie8升级到10
  • win10鼠标指针在文本区很小
  • 电脑久了就会高温
  • 新买的读卡器不读卡,提示放入驱动盘
  • windows xp桌面图标
  • linux一键安装软件
  • 程序员应该学什么
  • 行为怪异的人有问题吗
  • node.js读取文件的三种方式
  • python查找字符串中指定字符的个数
  • 安卓手机启用暴露通知
  • javascriptwhile
  • 一种新的运算符号类型的题
  • javascript面向对象精要pdf下载
  • javastudio
  • 残疾人就业保障金减免政策2022
  • 车辆购置税怎样做账
  • 金税三期怎么打完税凭证
  • 课税对象与征税对象一样吗
  • 加拿大鹅海关被税交多少
  • 成都国税发票领取地点
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设