2015-05-12 3 views
0

Я хотел бы сделать некоторые базовые вычисления с помощью выбранного запроса. У меня есть таблица под названием Расстояния, и есть атрибут, сохраненный на расстоянии. Я бы хотел рассчитать расстояние Customer1/Сумма расстояний клиентов1, Customer2 и Customer3. Является ли этот вид запроса формально право:Выберите арифметический расчет запроса

select ((select Distances.distance from Distances 
     where Distances.CustomerID='1')/
     (select SUM (Distances.distance) from Distances 
      where Distances.CustomerID IN ('1', '2', '3')) as ... 

ответ

0

Я думаю, что вы просто хотите использовать таблицу Расстояния дважды.

select cust1.Distance/sum(allCusts.distance) 
from distances cust1 
cross join distances allCusts 
where cust1.CustomerID = '1' 
and allCusts.CustomerID in ('1','2','3') 
group by cust1.Distance 
0

Просто используйте условную агрегацию:

select max(case when d.CustomerID = '1' then d.distance 
      end) as Cust1Distance, 
     sum(case when d.CustomerId in ('1', '2', '3') then d.distance 
      end) as Cust123Distance 
from distances d; 

Если вы только глядя на этих трех клиентов, а затем добавить where d.CustomerId in ('1', '2', '3') должен сделать запрос более эффективным.

Смежные вопросы