Получить полный и частичный счет чего-то в базе данных - SQL SERVER

Мне просто нужно получить общее количество продуктов по категориям, а также количество продуктов, которые имеют цену>= 5 по категориям

Это то что мне нужно

введите описание изображения здесь

Вы можете использовать мой пример на SQL FIDDLE

Большое спасибо!

4 ответа

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
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

Скрипка здесь

Однако вы не можете получить поле Id_Order, поскольку вы должны группировать по категориям.

Все:

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
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
Другие вопросы по тегам