Вычислить среднее значение с помощью двух запросов

#sql

#sql

Вопрос:

Я хочу вычислить среднее значение на основе 2 запросов:

Первый запрос: query1 — возвращает общую сумму

 select total from BRANDS_TOTAL;
  

или query1

Второй запрос:

 select count(distinct BRANDS) from BRANDS_TABLE;
  

или query2

Как мне объединить их, чтобы разделить результат? Что-то вроде: select round(query1 / query2)

Комментарии:

1. Пометьте свой вопрос базой данных, которую вы используете.

Ответ №1:

Вы можете поместить их в FROM предложение:

 select btot.total / bt.cnt_distinct
from (select total from BRANDS_TOTAL) btot cross join
     (select count(distinct BRANDS) as cnt_distinct from BRANDS_TABLE) bt;
  

Во многих базах данных вы могли бы просто поместить их в select :

 select (select total from BRANDS_TOTAL) btot /
      (select count(distinct BRANDS) as cnt_distinct from BRANDS_TABLE)
  

Но не все базы данных поддерживают это.

Наконец, будьте осторожны с целочисленным делением. Некоторые базы данных вычисляют 1/2 как 0 , а не 0.5 . Чтобы исправить это, просто умножьте первое значение на * 1.0 .