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;

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能