微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mysql-如何在单个行计算之后对数据进行分组

我对这个问题着迷.这是我完整的sqlite查询的简化版本:

SELECT OrderID,
       UnitPrice,
       Quantity,
       discount
FROM Order Details;

哪个返回:

OrderID  UnitPrice  Quantity  discount
10248    14.0       12        0.00
10248    9.8        10        0.00
10248    34.8        5        0.00
10249    18.6        9        0.00
10249    42.4       40        0.00
10250    7.7        10        0.00
10250    42.4       35        0.15
10250    16.8       15        0.15
10251    16.8       6         0.05
10251    15.6       15        0.05

我想返回一个称为总价的新列.这是单价乘以数量减去相应折扣百分比的计算.然而,由于将新列按OrderID分组,因此产生了复杂性,以代表总订单价格减去单个折扣百分比.

数小时来,我一直在追逐SUM聚合和GROUP BY.将单价和数量加总即可,但是由于折扣适用于不同的值,因此几乎就像首先需要计算折扣一样.折扣不必单独应用于每个项目.

解决方法:

这是假设您使用MysqL. MS sql Server可能需要稍作改动,但是两者的想法是相同的.

为了更好地理解这一点,请将其分为两个阶段.

首先计算订单项价格:

SELECT OrderID,
       UnitPrice,
       Quantity,
       discount,
       UnitPrice*Quantity*(1-discount) total
      FROM OrderDetails;

然后将GROUP BY与SUM()一起应用,因此您的最终查询将是:

SELECT OrderID,
       SUM(UnitPrice*Quantity*(1-discount)) total
      FROM OrderDetails
      GROUP BY OrderID;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐