Я хотел знать, как лучше всего решить описанный ниже сценарий, где у меня есть идентификатор и состояние в одной таблице. Принимается - это конечное состояние, после того, как состояние достигнет принятого для определенного идентификатора, никаких дальнейших обновлений для этого идентификатора не произойдет.подсчет выборочных данных для id
Например, вот как выглядит таблица
ID | State
-----+----------------
12 | Not Accepted
12 | Not Accepted
12 | Accepted
45 | Not Accepted
67 | Not Accepted
Теперь я хочу, чтобы рассчитывать различные идентификаторы Into принимаются и не принимаются ведер.
Если id
достигнут принятого состояния, то он должен учитываться в ведомости accepted
(игнорируя тот факт, что он ранее не принимал состояния). Пример для id = 12 имеет 2 не принимаемых состояния и 1 принимаемое состояние, поэтому нужно увеличивать счет accepted
.
Ожидаемый результат
Accepted | Not Accepted
---------+--------------
1 | 2
Я попытался это SQL заявление, но это не дает мне правильный результат
SELECT
SUM(CASE WHEN state = 'Accepted' THEN 1 ELSE 0 END) AS accepted,
SUM(CASE WHEN state != 'Accepted' THEN 1 ELSE 0 END) AS nonaccepted
FROM
SAMPLE;
результаты, которые я получаю:
Accepted | Not Accepted
---------+-------------
1 | 4
1) Совершенно неясно, о чем вы спрашиваете. Пожалуйста, опубликуйте SQL, который вы попытались сделать сами, включите результаты, которые вы получаете от этого запроса, и более четко сформулируйте проблему. 2) Пока вы делаете это [править], улучшите свой заголовок, чтобы указать проблему или вопрос, о которых вы спрашиваете. Если вы удалите информацию тега (SQL и Oracle), которая является избыточной, она оставляет * Basic *, которая имеет нулевое значение или значение. В вашем названии должно быть четко указано проблема, с которой вы сталкиваетесь, или вопрос, который вы задаете, и должен иметь смысл для будущих читателей, которые видят его в наборе результатов поиска. См. [Ask]. –
Вы чемпион, Вик! Я отредактировал ваше сообщение, чтобы отформатировать его правильно. Я вижу, что вы снова отредактировали, чтобы удалить форматирование. Хорошо, что вы мат! – mathguy
Простите @mathguy, я не собирался удалять ваше форматирование, я уже был в режиме редактирования, чтобы сделать его более разумным. –