获取数据库上的某些内容的总数和部分数 - SQL SERVER

时间:2013-12-10 19:32:35

标签: sql sql-server database sql-server-2008 sql-server-2012

我只需要按类别获得产品总数,以及按类别划分价格> = 5的产品数量

这就是我需要的

enter image description here

您可以使用我的示例 ON SQL FIDDLE

非常感谢!

4 个答案:

答案 0 :(得分:2)

select  id_category,
count(1) as qty_products, 
count(case when product_price>5 then 1 end) as [qty_products>5]
from orders
group by id_category

它应该为您提供每个类别的产品数量。我不确定你想要显示为“id_order”但是......如果它只是行号,那么你可以做类似的事情

select  ROW_NUMBER() OVER(ORDER BY id_category) as rownum,id_category,
count(1) as qty_products, 
count(case when product_price>5 then 1 end) as [qty_products>5]
from orders
group by id_category

答案 1 :(得分:0)

所有

SELECT
id_category,
count(*) AS COUNT
FROM orders
GROUP BY id_category

输出:

ID_CATEGORY COUNT
1           12
2           10
5           6

只有价格> = 5:

SELECT
id_category,
COUNT(*) AS COUNT
FROM orders
WHERE product_price >=5
GROUP BY id_category

输出:

ID_CATEGORY COUNT
1           10
2           7
5           3

答案 2 :(得分:0)

SELECT ID_CATEGORY, COUNT(ID_PRODUCT) AS NoOfProducts, 
SUM(CASE WHEN PRODUCT_PRICE > 5 THEN 1 ELSE 0 END) AS ProductsAbove5 
FROM Orders GROUP BY ID_CATEGORY

小提琴here

但是,您无法获得 Id_Order 字段,因为您必须按类别进行分组。

答案 3 :(得分:0)

select
  id_category, 
  count(id_product) as CountAll, 
  count(case when product_price > 5 then 1 else 0 end) as CountGreaterThan5
from orders
group by id_category