SQL从一列数量中获取百分比

时间:2017-04-26 11:01:00

标签: sql sql-server ajax

我有一套架子,有些没有被使用,但有些是。我想获得正在使用的货架的百分比(我正在使用来自javascript的ajax调用)这是一个很好的方法,你能提供一个例子吗?

这是我到目前为止的查询,它获取空值并将数量设置为0:

SELECT warehouse_locations.location, ISNULL(product_stock_warehouse.quantity, 0) as quantity 
FROM product_stock_warehouse 
RIGHT JOIN warehouse_locations ON product_stock_warehouse.location = warehouse_locations.location 
WHERE warehouse_locations.location LIKE 'A21%' 
ORDER BY product_stock_warehouse.quantity

enter image description here

如果货架不是0,那么它是" Full"因此计入使用的百分比。

我正在使用MS-SQL

1 个答案:

答案 0 :(得分:1)

我认为你需要聚合。这个想法是这样的:

SELECT wl.location, COALESCE(SUM(psw.quantity), 0) as total_quantity,
       (CASE WHEN COALESCE(SUM(psw.quantity), 0) = 0 THEN 'EMPTY' ELSE 'USED' END) as status
FROM warehouse_locations wl LEFT JOIN
     product_stock_warehouse  psw
     ON psw.location = wl.location 
WHERE wl.location LIKE 'A21%'
GROUP BY wl.location
ORDER BY psw.quantity;

一些注意事项:

  • LEFT JOINRIGHT JOIN更容易理解。这意味着"保留第一个表中的所有行"而不是"稍后在FROM条款的某些表中保留所有行,而我还没有看到#34;。
  • 表别名使查询更容易编写和阅读。
  • 使用GROUP BY为每个" shelf"获取一行,我假设它与" location"相同。