位置: 编程技术 - 正文

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

  • 矿产资源补偿费计入管理费用吗
  • 异地预缴可以退吗
  • 主营业务收入借方发生额表示什么
  • 报验户与正常户的区别
  • 所得税可以预交吗现在
  • 个人转让住房要交哪些税费?
  • 土地增值税什么时候开始征收的
  • 应收账款计提坏账比例
  • 企业促销应该采用什么方法
  • 流动负债中的短期借款
  • 政府补助结转是什么科目
  • 酒店收入简易征收会计核算是怎样的?
  • 软件企业涉税风险分析
  • 建筑施工企业的分公司区域公司等较大的
  • 服务业增值税如何计算
  • 销售不动产预收款纳税义务发生时间
  • 外资生产企业出口销售会计处理
  • 健身器材属于哪个部门管理
  • 普通发票跨月能入账吗
  • 企业报税表
  • 火车票飞机票进项税额怎么抵扣
  • 如何在Excel中进行数据筛选
  • 税负率的计算方法公式
  • php连接mysql数据库详细步骤(图文)
  • 如何更改windows11管理员账户名称
  • 公司收到款后怎么做账
  • 营业外收入账户性质
  • 资产负债表中其他流动资产包括哪些科目
  • ssm框架集成
  • php单例模式连接数据库
  • vue项目更新后还是老代码
  • 第十届蓝桥杯大赛个人赛省赛结果
  • chat的用法及短语
  • php强制下载文件在哪
  • 代销产品的形式有哪些
  • 结转生产成本是负数怎么办
  • mysql联合索引使用规则
  • 什么叫动量交易
  • 企业租赁厂房需要交什么税
  • 公司捐赠给个人公司要交税吗
  • 差旅费计入工资合理吗
  • 防火门是属于固定材料吗
  • mssql分布式数据库
  • mysql 局域网访问权限
  • 企业设立账簿
  • 计提工资和发放工资可以在一张凭证上吗
  • 金税四期对企业的好处
  • 发票定额 超过怎么办
  • 一般纳税人开普票和专票有什么区别
  • 小规模企业没有员工如何申报个税
  • 消防工程改造怎样入账
  • 5万元买二手车什么品牌比较好
  • 减免城建税的会计分录
  • 附加税多交了怎么抵税
  • 银行印鉴变更申请书范本
  • 税收优惠退回的税金怎么入账
  • 食品发票可以报销吗怎么报销
  • 每个月交工会经费
  • 公司销售部门购买产品
  • 贷款指标是什么意思
  • 商品过期怎么做分录
  • 伤病假条
  • sqlserver数据库最快存储时间
  • windows隐藏文件夹开启
  • ubuntu下载net-tools
  • executor进程
  • win7开机桌面黑色
  • 缺少系统操作怎么办
  • javascript 二维码
  • 触摸按钮失灵怎么回事
  • linux的启动顺序
  • jQuery position() 函数详解以及jQuery中position函数的应用
  • 如何批量删除列表
  • python 生成器send
  • shell删除一个文件
  • actionscript与javascript的区别
  • jq form提交
  • 衡水市地税局
  • 中国税务手机版
  • 神马电力几号发行
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设