CREATE VIEW "Northwind"."Order Subtotals" AS SELECT "Order Details".OrderID,
SUM(CAST("Order Details".UnitPrice * Quantity * (1-Discount)/100 * 100 AS DECIMAL(16,2))) AS Subtotal
FROM "Order Details"
GROUP BY "Order Details".OrderID;每一个OrderID都是唯一的。这里group by的作用是什么?如果没有这一句会怎样?
我看了教程,group by就是把该属性相同的每一行集中到一起。例如
就是把每一间商店的总销量计算出来。
但是在开头的代码中,每一个OrderID都是唯一的,不可能有两个Order的OrderID相同,怎么会在这里使用group by??我就看不懂了。
SUM(CAST("Order Details".UnitPrice * Quantity * (1-Discount)/100 * 100 AS DECIMAL(16,2))) AS Subtotal
FROM "Order Details"
GROUP BY "Order Details".OrderID;每一个OrderID都是唯一的。这里group by的作用是什么?如果没有这一句会怎样?
我看了教程,group by就是把该属性相同的每一行集中到一起。例如
就是把每一间商店的总销量计算出来。
但是在开头的代码中,每一个OrderID都是唯一的,不可能有两个Order的OrderID相同,怎么会在这里使用group by??我就看不懂了。
如果"每一个OrderID都是唯一的",就是按OrderID统计每个OrderID的Subtotal
但是在开头的代码中,每一个OrderID都是唯一的,不可能有两个Order的OrderID相同,怎么会在这里使用group by??我就看不懂了。
------如果不group by,则统计的是全部商店的总销量。
有group by 则是每一间商店的销量,这是一种分组合计,每一个商店 为一组。不加 group by 则把全部商店看成一个组了。
SUM(CAST("Order Details".UnitPrice * Quantity * (1-Discount)/100 * 100 AS DECIMAL(16,2))) AS Subtotal
FROM "Order Details"
GROUP BY "Order Details".OrderID;
这里用group by 是为了把OrderID中的分一个都分出来看。如果不按OrderID分组的话,就只会显示一个总值达不到你想要的确结果。所以这里用了group by 语句。我是这样认为的。。