位置: 编程技术 - 正文

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

  • 车船税是每个月交还是每年交
  • 购买财务软件的会计分录怎么做
  • 不需要缴纳税款和服役的是形势户寺观户
  • 一般纳税人和小规模纳税人的区别
  • 契税和房产税的减免政策
  • 母子公司无偿划转股权印花税
  • 派发现金红利分录
  • 企业所得税税率有几个档次
  • 个人厂房租赁税率是多少
  • 公司账外现金
  • 房地产公司机构
  • 金税盘付费
  • 外借资质收取的税费会计处理
  • 员工迟到扣款该怎么处理
  • 开给学校的发票要税号吗
  • 预缴税款的会计分录贷其他应付款
  • 没有收款人复核人的发票能报销吗
  • 开具的增值税专用发票上注明的价款为50万元
  • 单位汽车按揭贷款怎么贷
  • 补贴收入是否缴税
  • 实收资本减值会计处理
  • 报销差旅费如何报税
  • 腾讯手游助手怎么卸载
  • 什么叫资金预算
  • win7系统网络连接出现红叉
  • php require include
  • 多台电脑如何建立局域网
  • windows11更新多大
  • 外币交易汇兑损益包括
  • 若依框架前端如何通过后端加载页面
  • 从 零开始
  • 车道线检测视频素材
  • javascript基础类型
  • 企业资产损失税前扣除管理办法最新
  • 个税申报表收入额怎么填
  • java微信公众号开发源码
  • 流动资产的含义及常见项目
  • 资产减值损失结转到哪里
  • 残疾人保障金计入哪个会计科目
  • 哪些行业不适用税前加计扣除政策
  • 破产清算不够支付员工补偿金
  • 出口销售收入计算公式
  • 预付款已经开了发票未到货要怎么做账
  • 固定资产净残值和净值的区别
  • 人力成本费用率和人工成本利润率
  • 其他权益工具包括交易性金融资产吗
  • 上年未计提所得税,本年怎么做分录
  • 其他应收款坏账准备计提标准
  • 发票对方没有上传,无法勾选发票要怎么办
  • 农民合作社入股倡议书
  • 金税盘如何查看是否清卡
  • 直接费用的定义
  • 如何在sql server表中添加数据表格为什么没有显示
  • sqlserver删除数据语句
  • win7出现问题
  • win8创建系统映像
  • win10 记笔记
  • 苹果MAC电脑怎么砸壳应用app
  • windowsxp的开始菜单
  • nmeo.exe是什么
  • linux添加用户命令并添加管理员
  • win8和win10双系统切换
  • win10 sam文件下载
  • java的gui框架
  • js旋转函数
  • 用来检测程序小错误的测试方法
  • shell截取字段
  • python爬虫介绍
  • 安卓手机管家怎么关闭
  • javascript随机生成数字
  • python编写登录程序
  • 小规模纳税人开专票
  • 增值税运输费用税额计算
  • 福建省电子税务局操作指南
  • 贵州地方税务局网上办税服务厅
  • 个体税务怎么查询
  • 税务局打印发票的软件是哪个
  • 土地流转需要什么材料
  • 河南省国家税务局发票查询官网
  • 纳税服务投诉整改报告
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设