Хорошо, у меня есть две связанные таблицы, одна из которых содержит основные поля, называемые «возможностями», и одну, которая содержит поля сложения, называемые «возможностями_cstm». Для наших целей таблица возможностей содержит следующие поля: id и sales_stage. Таблица options_cstm содержит поля id_c и sales_stage_before_closed_c. id_c - это то, что связывает две таблицы.Подзапрос Mysql с процентной разбивкой (сложный запрос)
sales_stage содержит значения от 1 до 10, а также «Закрытые потери» или «Закрытый вход». В реальном приложении 1-10 представляют процентные полосы от 0-9% до 90-99%, а закрытые потери - 0%, а закрытые выигрыши - 100%.
sales_stage_before_closed_c - это процентная группа, в которой она находилась до того, как она была закрыта.
Итак, в моем фактическом запросе мне нужно отобразить процент для каждого sales_stage, сколько возможностей достигло этого этапа и привело к выигрышной возможности и сколько достигло этой стадии и привело к потере.
Обновление нового запроса, который гораздо ближе к тому, что мне нужно:
SELECT opportunities_c_top.sales_stage_before_closed_c AS 'Sales Stage',
COUNT(*) * 100.0/
(SELECT COUNT(*)
FROM `opportunities_cstm` opportunities_cstm join
`opportunities` opportunities
on opportunities_cstm.id_c = opportunities.id WHERE opportunities.`sales_stage` = 'Closed Won' AND opportunities_cstm.sales_stage_before_closed_c = opportunities_c_top.sales_stage_before_closed_c) AS 'Closed Won',
COUNT(*) * 100.0/
(SELECT COUNT(*)
FROM `opportunities_cstm` opportunities_cstm join
`opportunities` opportunities
on opportunities_cstm.id_c = opportunities.id WHERE opportunities.`sales_stage` = 'Closed Lost' AND opportunities_cstm.sales_stage_before_closed_c = opportunities_c_top.sales_stage_before_closed_c) AS 'Closed Lost'
FROM `opportunities_cstm` opportunities_c_top join
`opportunities` opportunities_top
on opportunities_top.id = opportunities_c_top.id_c
WHERE (opportunities_top.`sales_stage` = 'Closed Won' OR opportunities_top.`sales_stage` = 'Closed Lost')
GROUP BY opportunities_c_top.sales_stage_before_closed_c
http://sqlfiddle.com/#!2/ac28d/1
Его до сих пор не 100% правильно, хотя, если вы запустите запрос он показывает 60% -69%, как 200 на обоих, а не на 50 с каждой стороны.
Рассмотрите возможность предоставления надлежащих DDL (и/или sqlfiddle) ВМЕСТЕ С УДАЛЕННЫМ РЕЗУЛЬТАТОМ – Strawberry
Просьба предоставить образцы данных, а также желаемый набор результатов. –
'сколько возможностей достигло этого этапа и привело к выигрышной возможности, но вы не включаете« Закрытый выигрыш », который является выигрышной возможностью? –