数据库学习-SUM()与GROUP BY()

SUM()函数为求某一列的和

GROUP BY()函数的作用是使检索结果以某一列的数据为标准,合并该列的重复项,使用group by()函数的时候,通常表明结果中,某一列具有重复数据

当SUM(b)与GROUP BY(a)函数连用时,可以检索出a列中的每一种数据的在b列中对应的全部数量和

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,建议使用 INNER JOIN 来连接两个表,而不是使用逗号分隔的 FROM 子句。这会使 SQL 语句更易于阅读和理解。 其次,可以使用视图(View)来简化 SQL 语句,将复杂的逻辑转移到视图中,从而使 SQL 语句更简洁和易读。 此外,对于 SUM 函数的多次调用,可以使用 WITH 语句或者临时表(Temporary Table)来避免多次计算,从而提高 SQL 查询的性能。 最后,建议使用索引来优化查询,特别是在大型数据集的情况下,这可以显著提高查询性能。 下面是优化后的 SQL 语句: WITH ssb_summary AS ( SELECT partner_id, SUM(actual_amount) AS 销售额, SUM(refund_amount) AS 退货金额, SUM(refund_good_cost) AS 退货成本, SUM(refund_good_cost)*0.4 AS 退货损耗, SUM(cooperation_fee) AS 合作费用, SUM(point_fee) AS 扣点费用, SUM(receivable) AS 应收款, (SUM(amount)-SUM(point_fee))*0.06 AS 提成金额, SUM(settlement_amount) AS 结算金额, (SUM(amount)-SUM(point_fee)-SUM(refund_amount))-(SUM(cost)-SUM(refund_good_cost))-SUM(refund_good_cost)*0.4-SUM(cooperation_fee)-(SUM(amount)-SUM(point_fee))*0.06 AS 毛利润, ((SUM(amount)-SUM(point_fee)-SUM(refund_amount))-(SUM(cost)-SUM(refund_good_cost))-SUM(refund_good_cost)*0.4-SUM(cooperation_fee)-(SUM(amount)-SUM(point_fee))*0.06)/(SUM(amount)-SUM(refund_amount)-SUM(point_fee)) AS 毛利率 FROM saas_bill WHERE bill_month BETWEEN '2023-06' AND '2023-07' GROUP BY partner_id ) SELECT sp.company_name, ssb_summary.销售额, ssb_summary.退货金额, ssb_summary.退货成本, ssb_summary.退货损耗, ssb_summary.合作费用, ssb_summary.扣点费用, ssb_summary.应收款, ssb_summary.提成金额, ssb_summary.结算金额, ssb_summary.毛利润, ssb_summary.毛利率, sp.cooperate_status, sp.id, SUM(wipe_zero) FROM saas_partner sp INNER JOIN ssb_summary ON sp.id = ssb_summary.partner_id WHERE sp.company_type = '门店' AND sp.cooperate_status='合作中' GROUP BY sp.id, sp.company_name, ssb_summary.销售额, ssb_summary.退货金额, ssb_summary.退货成本, ssb_summary.退货损耗, ssb_summary.合作费用, ssb_summary.扣点费用, ssb_summary.应收款, ssb_summary.提成金额, ssb_summary.结算金额, ssb_summary.毛利润, ssb_summary.毛利率 ORDER BY ssb_summary.毛利润 DESC 这样,SQL 查询就会更快,更易于维护和理解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值