现在已知数据库表为订单记录表order,有以下字段: name,quantity(质量单位kg),price(总金额),type(1代表采购,2代表售出); 示例值: 苹果,100,200,1; 苹果,200,500,2; 苹果,80,500,1; 梨子,50,200,1; 梨子,100,300,2; 梨子,200,400,2; 梨子,100,400,1; 梨子,90,200,1; 荔枝,50,200,1; 荔枝,10,100,1; 荔枝,50,300,1; 荔枝,50,150,2; 请编写sql,要求结果包含以下字段: name,purchase_avr_price(采购每kg平均价格),supply_avr_price(出售每kg平均价格)
时间: 2023-08-02 21:09:27 浏览: 34
可以使用以下SQL语句来实现:
```
SELECT
name,
SUM(CASE WHEN type = 1 THEN price/quantity ELSE 0 END)/SUM(CASE WHEN type = 1 THEN 1 ELSE 0 END) AS purchase_avr_price,
SUM(CASE WHEN type = 2 THEN price/quantity ELSE 0 END)/SUM(CASE WHEN type = 2 THEN 1 ELSE 0 END) AS supply_avr_price
FROM
order
GROUP BY
name;
```
解释一下上述SQL语句的含义:
首先,使用SELECT关键字选择需要的字段(name, purchase_avr_price和supply_avr_price)。
然后,使用SUM和CASE WHEN语句来计算每个产品的平均采购价格和平均供应价格。对于每行记录,如果type等于1,则表示采购,将总价格除以总数量得到平均价格;如果type等于2,则表示供应,同样将总价格除以总数量得到平均价格。
最后,使用GROUP BY语句将结果按照产品名称分组。
执行以上SQL语句,得到的结果应该如下:
```
name purchase_avr_price supply_avr_price
苹果 2.5 2.25
梨子 3.3333333333333335 3.1666666666666665
荔枝 3.2 1.5
```