我有三个包含以下项目的表:
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
任何想法......?
答案 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
应该这样做。