位置: 编程技术 - 正文

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

  • 非居民纳税机构都包含哪些?
  • 水资源费如何入账
  • 附加税申报表里怎么填写
  • 金蝶入账流程
  • 附加税扣款比例
  • 个体工商户可以开发票吗
  • 房地产常用的付款方式有哪三种
  • 收款凭证填写模板下载
  • 小企业销售商品因批量原因给予客户的商业折扣
  • 货款现金收据可以做账吗
  • 企业承担个人所得税账务处理
  • 汇算清缴前未取得发票账务处理
  • 关于油票的纳税人识别号
  • 奖金发当月还是上月
  • 个人转账至公司要交税吗
  • 进料加工出口退税计算 计划分配率
  • win10通知栏怎么设置
  • macos big sur更新后能改回来吗
  • 任务栏音量图标点击无反应
  • windows11播放视频不清晰
  • 老板垫资如何做账务处理
  • 国有土地出让收入分析报告
  • php pulsar
  • 未使用的土地使用权可以摊销吗
  • h5页面跳转小程序不显示按钮
  • 以前年度损益调整账务处理分录
  • yolov5目标检测代码
  • 什么是重绘和回流
  • c#创建web
  • ChatGPT等大模型的模型量化:平滑量化法
  • 微信浏览器支持webassembly
  • discuz怎么添加diy模块
  • java enum tostring
  • golang 调用动态库
  • 增值税附加税有哪几种
  • 将织梦dedecms转换到wordpress
  • vue导航方式
  • 代收代缴水费收不上来怎么办
  • 应收账款属于供应商还是客户
  • 公司买卖股票亏损了 要交企业所得税吗
  • 小微企业减免的增值税账务处理
  • 物业公司收的停车费做什么科目
  • 企业暂估成本如何确定
  • 单位每个月支付给个人的保洁费如何申报入账
  • 企业清算未分配利润怎么交税
  • 定期定额户超过9万如何交个税
  • 当月的银行日记账漏计怎么办
  • 银行收到客户货款会计分录
  • 审计 调整分录
  • 企业接受供应单位提供劳务而发生的应付账款
  • 直接人工标准工时计算公式
  • 客户逾期不付款,需要赔多少违约金
  • 企业利润的构成内容
  • 现金支票办理电话
  • 商品流通企业流程
  • mysql基于什么模型
  • win10自动调整时间不准
  • centos6.5mini安装教程
  • win7系统硬盘分区类型
  • centos7 ethtool
  • win10提示激活windows
  • 影响电脑速度的因素
  • linux简明教程
  • win8.1隐藏文件夹
  • 显示win7
  • 笔记本电脑显示英特尔服务未在运行
  • win7的命令对话框在哪里
  • opengl metal
  • 学习计划
  • unity怎么创建字体
  • 单例类python
  • js 获取iframe
  • 国家税务局通用机打发票属于增值税发票吗
  • 山西国家税务网官网
  • 建筑垃圾清运属于什么应税服务
  • 国家税务总局黑龙江电子税务局下载
  • 地税服务大厅上班时间
  • 消费发票上的金额含税吗
  • 江苏税务局网上预缴税流程
  • 刚注册了一家深圳公司
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设