У меня есть таблица, содержащая множество различных продуктов. В настоящее время я могу подсчитать количество заказов на продукт ID, используя запрос типа:Поиск процента в строке сгруппированной таблицы
SELECT ProductId, COUNT(*) as NumOrders from Orders
GROUP BY ProductId;
Это дает таблицу с перечислением всех продуктов идентификаторов и количество заказов этого продукта. Я также могу подсчитать количество заказов, которые соответствуют определенным критериям, добавляя простой, где пункт:
SELECT ProductId, COUNT(*) as NumCriteria from Orders
WHERE HasCriteria = 1
GROUP BY ProductId;
Это дает мне подобную таблицу идентификаторов продукта и количество заказов этого продукта, но меньшего числа из-за не все заказы соответствуют этим критериям.
Что мне нужно сделать, так это запустить оба счета в одном запросе, чтобы отобразить как количество заказов, соответствующих критериям, так и общее количество заказов на идентификатор продукта, а затем рассчитать процент заказов, которые соответствуют критерии для идентификатора продукта. По существу что-то вроде этого:
SELECT Product ID,
COUNT(*meets criteria*),
COUNT(*total*),
(COUNT(*meets criteria*) * 100/COUNT(*total*))
Так что мой выход дает мне что-то вроде этого:
ProductID | NumCriteria | NumOrders | Percent
0001 | 5 | 10 | 50
0002 | 4 | 20 | 20
0003 | 2 | 6 | 33
До сих пор все методы я видел, чтобы вычислить процент чем-то для подсчета какой процент строк в таблице соответствуют критериям, но мне нужен процент за каждый идентификатор продукта в таблице. Есть ли способ сделать это в одном запросе?
EDIT: Необработанная таблица - это заказы, содержащие идентификатор заказа, идентификатор продукта и информацию о клиенте. Те же самые продукты появляются в нескольких заказах. Краткий пример будет:
Order ID | Product ID | Other info...
001 | 0002 | ...
002 | 0002 | ...
003 | 0001 | ...
004 | 0003 | ...
005 | 0001 | ...
006 | 0002 | ...
007 | 0004 | ...
Таким образом, результат первого запроса на этой таблице будет:
Product ID | NumOrders
0001 | 2
0002 | 3
0003 | 1
0004 | 1
Можете ли вы предоставить образцы данных? – kbball
Приведенный небольшой пример таблицы выше. –