位置: 编程技术 - 正文

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

  • 企业税前扣除凭证包括增值税发票吗
  • 企业如何代扣代缴个人所得税20%
  • 出纳记账购进的货物
  • 出口退税进项发票认证勾选
  • 去年的费用票会计分录
  • 个体户2019年定额征收额度是多少
  • 分公司是独立核算还是非独立核算
  • 销售材料应确认的损益是什么意思
  • 企业报税盘入账应该记入哪个科目
  • 预付款如何扣除
  • 开出支票如何入账
  • 加计扣除退回的所得税怎么做账
  • 没通过认证的增值税发票是否能够记入成本抵扣
  • 注销时留抵税额不能退怎么做分录
  • 没有取得发票可以抵扣成本吗
  • 小规模纳税人提供设计服务税率
  • 公司买理财产品的账务处理
  • 上个月开的增值税发票这个月可以作废吗
  • 金融保险定义
  • 建筑企业在境外施工税收一共包括几个部分
  • 卷烟批发环节消费税计算
  • 买一赠一怎么确定真假
  • 公司注销后资产属于谁
  • 损益类科目的借方表示
  • 加盟商的作用
  • 年底分红如何计税
  • 光伏发电项目发电户是否可以享受小规模优惠政策
  • 主营业务收入需要交增值税吗
  • windows更新出现错误重新打开设置
  • 公司的现金管理规定
  • windows11邮件
  • windows10设备如何打开蓝牙
  • php多表联合查询
  • 支付人工费会计科目
  • 未分配利润转增股本交印花税
  • ctrl起什么作用
  • el-input value
  • 海峡群岛属于哪个洲
  • yolov1训练过程
  • 初学者安装visual studio
  • 注意力机制cbam
  • 小规模纳税人广告税率是多少
  • 母公司的资质怎样才能转给子公司
  • dedecms怎么更换模板
  • 小规模纳税人增值税专用发票税率
  • 报关单填制相关规范相关文件
  • 税务登记程序有哪些
  • 个体户需要税务报道不
  • db2数据库安装服务器的环境
  • 在MysQL数据库中,数据库文件的扩展包括
  • 应付股利是否影响未分配利润
  • 应收账款账龄计提坏账比例
  • 收到发票并支付货款怎么做账
  • 小规模卖固定资产怎么开票
  • 什么企业的应急预案需要备案
  • 以前年度损益调整结转到哪里
  • 无形资产的有效期限与法定保护期限相等
  • 小微企业社保代缴
  • 预提费用汇算清缴如何调整
  • 预收账款结转收入分录
  • 广告费和业务宣传费税前扣除基数
  • 质量赔款能冲减收入么
  • 公司对公账户给我个人打款然后现金取走了个人犯罪吗
  • 五险怎么做账
  • 什么是汇总记账凭证账务处理程序?有哪些特点?
  • MySQL关于exists的一个bug
  • 微软宣布9款游戏退出XGP订阅
  • 如何看xp系统
  • win10预览版21h2
  • appservicesdkscripterror
  • u盘制作winpe启动盘
  • win7自带的软件
  • windowsxp的主要特点
  • linux xim
  • ikeeperpab.exe是什么
  • assetstore怎么下载资源包
  • 下载一个网页的所有图片
  • python调大小
  • 新疆碧桂园三期最新消息
  • 广东发票勾选认证操作流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设