写一个sql计算药品的期初金额和期末金额,药品库存台账表是stock
时间: 2024-03-21 13:40:48 浏览: 178
假设药品库存台账表是"stock",其中包含以下字段:
- id:库存台账ID
- drug_id:药品ID
- quantity:数量
- cost:成本
- create_time:创建时间
则可以使用以下SQL语句计算药品的期初金额和期末金额:
```
-- 计算期初金额
select drug_id, sum(quantity * cost) as period_start_amount
from stock
where create_time < '2022-01-01'
group by drug_id;
-- 计算期末金额
select drug_id, sum(quantity * cost) as period_end_amount
from stock
where create_time >= '2022-01-01'
group by drug_id;
```
其中,第一个SQL语句计算的是时间点"2022-01-01"之前的期初金额,第二个SQL语句计算的是时间点"2022-01-01"之后的期末金额。需要注意的是,计算期初金额和期末金额时需要根据药品ID进行分组。
相关问题
sql语句写一个函数用来计算在order表中插入购买量以及购买金额时,products表中自动计算剩余商品库存以及折后价格
首先,需要在products表中添加两个字段:剩余库存(remain_stock)和折后价格(discounted_price)。
然后,可以创建一个触发器,在order表中插入数据时自动更新products表中的数据。具体步骤如下:
1. 创建一个更新函数,用于更新products表中的剩余库存和折后价格:
```sql
CREATE FUNCTION update_product_info() RETURNS TRIGGER AS $$
BEGIN
UPDATE products SET
remain_stock = remain_stock - NEW.quantity,
discounted_price = price * NEW.discount
WHERE id = NEW.product_id;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
```
2. 创建一个触发器,在order表中插入数据时自动调用更新函数:
```sql
CREATE TRIGGER update_product_info_trigger AFTER INSERT ON order
FOR EACH ROW EXECUTE FUNCTION update_product_info();
```
这样,在每次向order表中插入数据时,都会自动更新products表中的剩余库存和折后价格。同时,注意保护好敏感信息,避免泄露。
SQL中计算折扣总金额
假设我们有一个名为orders的表,其中包含以下列:
- id:订单ID
- total_amount:订单总金额
- discount:折扣金额
我们可以使用以下SQL语句计算折扣总金额:
```
SELECT SUM(discount) AS total_discount
FROM orders
```
这将返回一个名为total_discount的列,其中包含所有订单的折扣总金额。
阅读全文
相关推荐









