Форум: "Прочее";
Текущий архив: 2013.04.21;
Скачать: [xml.tar.bz2];
Внизsql-запрос Найти похожие ветки
← →
Андреевич (2012-12-24 09:10) [0]Подскажите, как сделать такую штуку. Есть запрос, примерно такой:
select cct.id,cct.value from (
select id,value from sometable
) cct
как мне в этом запросе вернуть количество(сумму,avg и тп) по полю value если оно больше значения и если меньше значения? (допустим 100). результат cct - довольно ресурсоемкий запрос, процедуры нет (т.е. в один запрос все делается)
← →
O'ShinW © (2012-12-24 09:16) [1]having?
← →
Андреевич (2012-12-24 09:20) [2]спасибо посмотрю, но уточню, что нужно примерно следующее:
select cct.id, count(cct.value>100), count(cct.value<100) from (
select id,value from sometable
) cct
group by ..
с heaving не тоже самое, что добавить where cct.value>100? (тогда значения ниже не отберутся)
← →
O'ShinW © (2012-12-24 09:31) [3]не..
having - условие на уже сгруппированные данные
← →
O'ShinW © (2012-12-24 09:33) [4]> select id, Count(value) from sometable
group by id
having Count(value) > 100
в выборке данные, которые после группировки больше 100
в принципе ,аналогично
select * from (
select id, Count(value) CNT from sometable
) A
where A.CNT > 100
← →
Андреевич (2012-12-24 09:40) [5]
> в принципе ,аналогично
ну этот запрос вернет кол-во только для A.CNT > 100? :) а мне надо кол-во и для того что меньше, и для того что больше.
вроде получилось делать через case
← →
Андреевич (2012-12-24 09:50) [6]в смысле так:
select sum(case when cct.value>100 then 1 else 0 end), sum(case when cct.value<100 then 1 else 0 end) from (
select id,value from sometable
) cct
← →
ДИСА (2012-12-24 10:12) [7]А равно 100 не нужно что ли ?
← →
Андреевич (2012-12-24 10:15) [8]ну это уже детали, is null тоже проверяется.
специально не указывал это в запросе, чтобы небыло желания сделать >100 и all-count(value>100) :) т.е. условия могут даже пересекаться
← →
знайка (2012-12-24 11:46) [9]
> в смысле так:
зачем подзапрос?
← →
Компромисс1 (2012-12-24 13:18) [10]Можно еще так:
select (select count(*) from mytable where value >= 100), (select count(*) from mytable where value < 100) from table_with_one_row
← →
antonn © (2012-12-24 22:21) [11]
> зачем подзапрос?
в нем группировки из нескольких таблиц
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2013.04.21;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c