#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
.