位置: 编程技术 - 正文

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

  • 小规模纳税人的企业所得税税率
  • 稽查局和税务局的关系
  • 计提坏账后又收回怎么做
  • 营业外收入影响所有者权益吗
  • 信息技术服务可以简易征收吗
  • 管理不善进项税额转出会计分录
  • 未填开发票怎么作废
  • 纳税筹划成本支出怎么算
  • 工业企业员工工资占收入比例
  • 物业代收费:有关法律
  • 冲销暂估入库如何做会计核算?
  • 加工费发票可以不开数量吗
  • 退税降低
  • 材料采购做账的流程
  • 借方增加的科目记忆口诀
  • 营改增住宿费的进项税可以抵扣吗
  • 开票方与受票方的区别
  • 租赁房产不开租房发票
  • 金税盘可以异地使用吗
  • 行政事业单位国有资产处置收入包括
  • 增值税普通发票可以抵扣吗
  • 税控盘年费每年都可以抵扣吗
  • 企业所得税视同销售的捐赠扣除
  • 固定资产清理的借贷方向表示什么
  • 公司买珠宝会计分录
  • 其他货币资金怎么做账
  • 借方和贷方是什么意思银行存款
  • 销售原材料会计分录,款项已收
  • 进项退回怎么做账
  • 年初建账的期初余额
  • 苹果电脑快捷键删除
  • 如何修复windows11无法的注册表值
  • 预计负债基本确定的概率区间
  • 无效发票不能报销怎么办
  • 常见的无线网络技术有
  • 土地出让金土地使用税
  • 哪些发票内容可以抵税
  • 劳务派遣公司账目如何做
  • 金融服务机构
  • phpwhile循环多维数组
  • rest for api
  • 【C#+JavaScript+SQL Server】实现Web端在线考试系统 五:考试模块设计(附源码和资源)
  • 销售边角料的会计分录
  • 申报个税是不是就必须交社保
  • 开发商需要缴纳保证金
  • dedecms怎么用
  • 新事业单位会计制度下固定资产的核算
  • 小微企业所得税优惠政策最新2023
  • 低值易耗品摊销方法有几种
  • 小规模纳税人批发零售税率
  • 安装防伪税控系统的方法
  • 业务招待费专用会计科目
  • 出纳去银行取钱需要带什么
  • 车间杂工工资如何结算
  • 因质量问题对方直接扣款也不开票
  • 免费样品的好处
  • 没有按时对账
  • 库存商品主要包括
  • 报销差旅费用什么收款凭证还是转账凭证
  • 如何判断企业实际控制人
  • 转账到银行卡是从哪转的
  • mysql数据库优化总结
  • mysql工作内容
  • mysql内存占用一直增高不释放
  • mysql不能运行
  • Windows server 2008下如何安装应用程序
  • xp系统内存不能为read的解决方法
  • ubuntu操作
  • node.js操作文件
  • cocos2d开发app
  • php编译安装常见的软件
  • 用于登录
  • 使用GeoPainter一步一步布置场景
  • centos7如何安装
  • 个人所得税完税证明网上打印
  • 2021年徐州农村合作医疗
  • 增值税一般纳税人资格登记表
  • 公路客运购票
  • 太原市税务局电话
  • 代办营业执照代办人有什么法律责任
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设