Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 какой селект лучше  [new]
qwerty2012
Member

Откуда:
Сообщений: 249
Select count(case when f1 = 1 then 1 else nul end),count(case when f2 = "abc" then 1 else nul end) from table 


или

Select 
(select count(t_s .f1) from table t_s where f1 =1 and t_s .id=t.id),
(select count(t_s .f1) from table t_s where f2 = "abc"and t_s .id=t.id)
from table t
5 июл 13, 12:01    [14526679]     Ответить | Цитировать Сообщить модератору
 Re: какой селект лучше  [new]
JaRo
Member

Откуда:
Сообщений: 1659
А разве не очевидно?
5 июл 13, 12:05    [14526715]     Ответить | Цитировать Сообщить модератору
 Re: какой селект лучше  [new]
Добрый Э - Эх
Guest
А ничего, что в общем случае запросы совершенно разные?
5 июл 13, 12:06    [14526723]     Ответить | Цитировать Сообщить модератору
 Re: какой селект лучше  [new]
stax..
Guest
qwerty2012,

если не учитывать "А ничего, что в общем случае запросы совершенно разные? ",
то имхо 1-й луче

.....
stax
5 июл 13, 15:30    [14528324]     Ответить | Цитировать Сообщить модератору
 Re: какой селект лучше  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18359
stax..
qwerty2012,
если не учитывать "А ничего, что в общем случае запросы совершенно разные? ",
то имхо 1-й луче


- Грузины лучше чем армяне!
- Чем лучше?!
- Чем армяне!!!
5 июл 13, 16:08    [14528681]     Ответить | Цитировать Сообщить модератору
 Re: какой селект лучше  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
andrey_anonymous
stax..
qwerty2012,
если не учитывать "А ничего, что в общем случае запросы совершенно разные? ",
то имхо 1-й луче


- Грузины лучше чем армяне!
- Чем лучше?!
- Чем армяне!!!


))
8 июл 13, 15:09    [14536420]     Ответить | Цитировать Сообщить модератору
 Re: какой селект лучше  [new]
qwerty2012
Member

Откуда:
Сообщений: 249
почему разные они что разные данные вернут?
9 июл 13, 09:56    [14539501]     Ответить | Цитировать Сообщить модератору
 Re: какой селект лучше  [new]
JaRo
Member

Откуда:
Сообщений: 1659
Проще спросить, чем попробовать или подумать?..
9 июл 13, 10:01    [14539527]     Ответить | Цитировать Сообщить модератору
 Re: какой селект лучше  [new]
sQud
Member

Откуда: Минск
Сообщений: 100
qwerty2012
в первом запросе вы получите одну строку c двумя столбцами count для F1 и F2

во втором запросе вы получите count для каждой из трок table

какой селект лучше ? Видя входные данные можно ответить только так - если вам нужно больше строк на выходе то второй, если нужно одна трока - тогда первый.


Не могли бы Вы уточнить что именно Вам нужно сделать?
9 июл 13, 11:41    [14540102]     Ответить | Цитировать Сообщить модератору
 Re: какой селект лучше  [new]
stax..
Guest
qwerty2012
почему разные они что разные данные вернут?

  1  with t as (
  2  select 1 id, 1 f1, 'abc' f2 from dual union all
  3  select 1 id, 1 f1, 'abc' f2 from dual union all
  4  select 1 id, 2 f1, 'abc' f2 from dual union all
  5  select 1 id, 2 f1, 'abc' f2 from dual union all
  6  select 1 id, null f1, 'abc' f2 from dual union all
  7  select 1 id, 1 f1, 'xyz' f2 from dual
  8  )
  9  Select
 10  count(case when f1 = 1 then 1 else null end) cc1
 11  ,count(case when f2 = 'abc' then 1 else null end) cc2
 12  from t
 13  /*
 14  Select
 15  (select count(t_s.f1) from t t_s where f1 =1 and t_s.id=t.id) cc1,
 16  (select count(t_s.f1) from t t_s where f2 = 'abc' and t_s.id=t.id) cc2
 17  from t
 18* */
SQL> /

       CC1        CC2
---------- ----------
         3          5

SQL> ed
Wrote file afiedt.buf

  1  with t as (
  2  select 1 id, 1 f1, 'abc' f2 from dual union all
  3  select 1 id, 1 f1, 'abc' f2 from dual union all
  4  select 1 id, 2 f1, 'abc' f2 from dual union all
  5  select 1 id, 2 f1, 'abc' f2 from dual union all
  6  select 1 id, null f1, 'abc' f2 from dual union all
  7  select 1 id, 1 f1, 'xyz' f2 from dual
  8  )
  9  /*
 10  Select
 11  count(case when f1 = 1 then 1 else null end) cc1
 12  ,count(case when f2 = 'abc' then 1 else null end) cc2
 13  from t
 14  */
 15  Select
 16  (select count(t_s.f1) from t t_s where f1 =1 and t_s.id=t.id) cc1,
 17  (select count(t_s.f1) from t t_s where f2 = 'abc' and t_s.id=t.id) cc2
 18  from t
 19* --*/
SQL> /

       CC1        CC2
---------- ----------
         3          4
         3          4
         3          4
         3          4
         3          4
         3          4

6 rows selected.

SQL>


.....
stax
9 июл 13, 12:10    [14540276]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить