Получить полный и частичный счет чего-то в базе данных - 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