Здравствуйте, Аноним, Вы писали:
А>Есть таблица с полем state. Нужно посчитать сколько каждого state присутствует. Требуется выбрать количество нужных значений в переменные + выбрать count(*).
1. Получаем нужные данные в строках:
select state, count(*) from t group by rollup (state)
2. Преобразуем строки в столбцы любым из множества известных способов. Наиболее популярные перечислены в FAQ на sql.ru
Лично я бы посоветовал сделать это на клиенте, если конечный результат предназначен для показа пользователю.
[Oracle] Посчитать количество определенных значений в таблице
От:
Аноним
Дата:
12.06.13 17:49
Оценка:
Привет.
Есть таблица с полем state. Нужно посчитать сколько каждого state присутствует. Требуется выбрать количество нужных значений в переменные + выбрать count(*).
Что-то типа:
select count(*), count(where state = 0), count(where state = 1)... into l_total, l_zero, l_one,.. from t
Re: [Oracle] Посчитать количество определенных значений в таблице
От:
Аноним
Дата:
12.06.13 18:00
Оценка:
А>Что-то типа: А>
А>select count(*), count(where state = 0), count(where state = 1)... into l_total, l_zero, l_one,.. from t
А>
иначе говоря хочется вот этого:
select
(
select count(*)
from t
),
(
select count(*)
from t
where state = 0
),
(
select count(*)
from t
where state = 1
),
(
select count(*)
from t
where state = 2
),
(
select count(*)
from t
where state = 3
) into total, one, two, three, four
from dual;
но в одним быстрым запросом.
Re: [Oracle] Посчитать количество определенных значений в таблице
Здравствуйте, Аноним, Вы писали:
А>Привет.
А>Есть таблица с полем state. Нужно посчитать сколько каждого state присутствует. Требуется выбрать количество нужных значений в переменные + выбрать count(*).
А>Что-то типа: А>
А>select count(*), count(where state = 0), count(where state = 1)... into l_total, l_zero, l_one,.. from t
А>
select count(*), sum(decode(state,0,1,0)), sum(decode(state,1,1,0)), sum(decode(state,2,1,0))... into l_total, l_zero, l_one, l_two,.. from t
--------------------------------------------------------------
Правильно заданный вопрос содержит в себе половину ответа
Re[2]: [Oracle] Посчитать количество определенных значений в таблице
От:
Аноним
Дата:
13.06.13 08:36
Оценка:
Здравствуйте, AndrewN, Вы писали:
AN>
AN>select count(*), sum(decode(state,0,1,0)), sum(decode(state,1,1,0)), sum(decode(state,2,1,0))... into l_total, l_zero, l_one, l_two,.. from t
AN>
спасибо!
Re[2]: [Oracle] Посчитать количество определенных значений в таблице
От:
Аноним
Дата:
13.06.13 08:43
Оценка:
Здравствуйте, wildwind, Вы писали:
W>1. Получаем нужные данные в строках: W>
W>select state, count(*) from t group by rollup (state)
W>
W>2. Преобразуем строки в столбцы любым из множества известных способов. Наиболее популярные перечислены в FAQ на sql.ru W>Лично я бы посоветовал сделать это на клиенте, если конечный результат предназначен для показа пользователю.
такой вариант не выдаст state значений которых нет в данной конкретной выборке. т.е. нельзя узнатьполучить 0 для значения state=3 если в выборке нет строк с таким значением state.
Re[3]: [Oracle] Посчитать количество определенных значений в таблице
Здравствуйте, Аноним, Вы писали:
А>такой вариант не выдаст state значений которых нет в данной конкретной выборке. т.е. нельзя узнатьполучить 0 для значения state=3 если в выборке нет строк с таким значением state.
Этого не было в начальной постановке. Но получить это очень просто. Нужно перед транспонированием соединить результат приведенной выше выборки со справочником этих самых state. Надеюсь, он у вас есть?
Re[4]: [Oracle] Посчитать количество определенных значений в таблице
От:
Аноним
Дата:
16.06.13 04:40
Оценка:
Здравствуйте, wildwind, Вы писали:
W>Но получить это очень просто. Нужно перед транспонированием соединить результат приведенной выше выборки со справочником этих самых state. Надеюсь, он у вас есть?
это как? можно законченный пример? если соединить с таблицей состояний (outer), то по существующим строкам будет точное колчество, тогда как по отсутствующим будет всегда — 1.
Re[5]: [Oracle] Посчитать количество определенных значений в таблице
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, wildwind, Вы писали:
W>>Но получить это очень просто. Нужно перед транспонированием соединить результат приведенной выше выборки со справочником этих самых state. Надеюсь, он у вас есть?
А>это как? можно законченный пример? если соединить с таблицей состояний (outer), то по существующим строкам будет точное колчество, тогда как по отсутствующим будет всегда — 1.
С чего бы 1? 0 будет.
Re[6]: [Oracle] Посчитать количество определенных значений в таблице
Здравствуйте, wildwind, Вы писали:
А>>это как? можно законченный пример? если соединить с таблицей состояний (outer), то по существующим строкам будет точное колчество, тогда как по отсутствующим будет всегда — 1.
W>С чего бы 1? 0 будет.
Re[7]: [Oracle] Посчитать количество определенных значений в таблице
От:
Аноним
Дата:
17.06.13 12:02
Оценка:
Здравствуйте, wildwind, Вы писали:
W>Разумеется, считать нужно не общее количество строк, а количество имеющихся в основной таблице значений. W>Пример: http://www.sqlfiddle.com/#!4/28c4bf/2/0