用于在多个值上查找百分比的SQL语句

时间:2011-07-13 15:04:39

标签: mysql

我有三个包含以下项目的表:

Products:
  ID   NAME     CATEGORY   STOCK
   1   Bolts      3          1
   2   Daisies    4          1
   3   Milk       5          2
   4   Washers    3          3
   5   Roses      4          1

Categories:
  ID  DESCRIPTION
   3  Hardware
   4  Plants
   5  Food

Stocks:
  ID DESCRIPTION
   1 In Stock
   2 Out of Stock
   3 Ordered

我一直在敲打我的脑袋来获取一条SQL语句,该语句将根据类别返回我库存物品的百分比,但我无法使其正常工作。

我正在寻找一个会返回如下内容的声明:

CATEGORY    PERCENTAGE   // comments
Hardware      50         // Bolts in stock but washers are ordered
Plants       100         // all plants in stock
Food           0         // milk is out of stock

任何想法......?

2 个答案:

答案 0 :(得分:2)

select DESCRIPTION, sum(STOCK = 1) / count(*) as PERCENTAGE
from Products p
join Categories c on c.id = p.CATEGORY
group by DESCRIPTION

这是有效的,因为STOCK = 1是一个布尔值,如果为真,则1,如果为假则为0,因此SUM(STOCK = 1)计算STOCK = 1为真的次数{{1}} !

答案 1 :(得分:0)

我无法真正看到这句话的使用,但它会是

SELECT c.DESCRIPTION, count(p.STOCK = 1) / count(*) * 100
FROM CATEGORY c
JOIN PRODUCT p ON p.CATEGORY = c.ID
GROUP BY c.ID, c.DESCRIPTION

应该这样做。