powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Еще раз про sum и группировку.
3 сообщений из 3, страница 1 из 1
Еще раз про sum и группировку.
    #32133436
sipliy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Видел, что по данной проблеме в этом форуме вопрос уже подымался, но у меня такая фенька не прокатила. Помогите пожалуйста.
Есть три таблицы.
1. таблица юзверей
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE users (
  name char( 20 ),
  user_count char( 20 ),
  id int( 10 ) unsigned NOT NULL auto_increment,
  description text NOT NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM;

2. таблица платежей этого пользователя
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE arrival (
  id int( 11 ) NOT NULL auto_increment,
  userid int( 11 ) NOT NULL default '0',
  summa double( 10 , 2 ) NOT NULL default '0.00',
  description char( 255 ) NOT NULL default '',
  data datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (id),
  KEY userid (userid)
) TYPE=MyISAM;

3. таблица затрат по этому пользователю
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE pay (
  id int( 11 ) NOT NULL auto_increment,
  userid int( 11 ) NOT NULL default '0',
  summa double( 10 , 2 ) NOT NULL default '0.00',
  description char( 255 ) NOT NULL default '',
  PRIMARY KEY  (id),
  KEY userid (userid)
) TYPE=MyISAM;

Во всех таблицах разное количество записей.
Необходимо вытащить сумму платежей и сумму затрат по всем пользователям.
Пробовал пользовать запросы вида
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
select 
   users.id,
   users.name,
   sum(arrival.summa)/count(arrival.userid)/count(distinct arrival.userid) as 'summa_in',
   sum(pay.summa)/count(pay.userid)/count(distinct pay.userid) as 'summa_out' from users 
  left join arrival on arrival.userid=users.id 
  left join pay on pay.userid=users.id 
group by users.id 
order by users.name

выдает неправельные результаты.
...
Рейтинг: 0 / 0
Еще раз про sum и группировку.
    #32133494
medved
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну блин!!!!!
pay.userid, arrival.userid - не уникальные поля!!!! а в count distinct должны быть уникальные...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
select 
   users.id,
   users.name,
   sum(arrival.summa)/(count(arrival.id)/count(distinct arrival.id)) as 'summa_in',
   sum(pay.summa)/(count(pay.id)/count(distinct pay.id)) as 'summa_out' from users 
  left join arrival on arrival.userid=users.id 
  left join pay on pay.userid=users.id 
group by users.id 
order by users.name
...
Рейтинг: 0 / 0
Еще раз про sum и группировку.
    #32133731
sipliy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2medved , сорри прошляпил, зглупил и вообще.
Спасибо за помощь.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Еще раз про sum и группировку.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]