SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 19.07.2008 00:06:09

talman
Участник
Зарегистрирован: 03.07.2008
Сообщений: 8

AVG по полям из нескольких таблиц

Подскажите, как высчитать среднее арифметическое по полям 'price1' и 'price2' соответственно в таблицах 'table1' и 'table2'.

Спасибо.

Неактивен

 

#2 21.07.2008 06:25:05

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: AVG по полям из нескольких таблиц

SELECT (SELECT AVG(price1) FROM table1) avg1, (SELECT AVG(price2) FROM table2) avg2;

Неактивен

 

#3 21.07.2008 10:05:52

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: AVG по полям из нескольких таблиц

я так понял, что вопрос бы как вычислить их общее среднее арифметическое

Неактивен

 

#4 21.07.2008 15:33:38

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: AVG по полям из нескольких таблиц

Ну, тогда
SELECT ((SELECT AVG(price1) FROM table1) + (SELECT AVG(price2) FROM table2)) / 2;   wink

Неактивен

 

#5 21.07.2008 15:34:54

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: AVG по полям из нескольких таблиц

А,  нет, это будет не честное среднее. Честное среднее - через union sad

SELECT AVG(v) FROM (SELECT price1 v FROM table1 UNION SELECT price2 FROM table2);

Неактивен

 

#6 22.07.2008 16:23:43

talman
Участник
Зарегистрирован: 03.07.2008
Сообщений: 8

Re: AVG по полям из нескольких таблиц

paulus написал:

А,  нет, это будет не честное среднее. Честное среднее - через union sad

SELECT AVG(v) FROM (SELECT price1 v FROM table1 UNION SELECT price2 FROM table2);

Спасибо. То, что нужно.

Неактивен

 

#7 23.07.2008 15:20:59

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: AVG по полям из нескольких таблиц

paulus написал:

А,  нет, это будет не честное среднее. Честное среднее - через union sad

почему нечестное? вроде очень даже честное

через union (по сути вынимаем обе таблицы) - это жесть, особенно на больших таблицах smile)

Неактивен

 

#8 23.07.2008 15:26:45

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: AVG по полям из нескольких таблиц

а еще можно типа так:

Код:

SELECT 
  (
     (SELECT SUM(price1) FROM table1) + (SELECT SUM(price2) FROM table2)
   )/(
     (SELECT COUNT(*) FROM table1) + (SELECT COUNT(*) FROM table2)
  )

должно по идее даже быстро выполнятся smile

Неактивен

 

#9 23.07.2008 19:03:05

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: AVG по полям из нескольких таблиц

Кстати, да, особенно в MyISAM smile

Неактивен

 

#10 28.07.2008 18:54:43

talman
Участник
Зарегистрирован: 03.07.2008
Сообщений: 8

Re: AVG по полям из нескольких таблиц

спасибо

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson