Как я могу в запросе рассчитать сумму объединения - PullRequest
0 голосов
/ 13 мая 2018

это то, что я сделал, и в изображении результат теперь я хочу получить сумму всей группы по UserSend, например Вы можете увидеть, что maorsapo@gmail.com есть 7 и 3 во втором Я хочу это вместо этого это будет maorsapo@gmail.com, 10 (7 + 3) как я могу это сделать?

SELECT m.UserSend, Count(*) AS Expr1
FROM Messages AS m
GROUP BY m.UserSend;
union
SELECT F.UserRequest, Count(*) AS Expr1
FROM FavoritesList AS F
GROUP BY F.UserRequest;

https://ibb.co/cbuKrJ

Ответы [ 3 ]

0 голосов
/ 13 мая 2018

Вы хотите, чтобы union all вместо union:

SELECT user, sum(cnt)
FROM (SELECT m.UserSend as user, Count(*) AS cnt
      FROM Messages AS m
      GROUP BY m.UserSend;
      UNION ALL
      SELECT F.UserRequest, Count(*) AS cnt
      FROM FavoritesList AS F
      GROUP BY F.UserRequest
     ) as u
GROUP BY user;

UNION удаляло дубликаты, чего вы не хотите делать.

Я помню, что некоторые старшеВ версиях MS Access для этого требовалось представление, поскольку union / union all не было разрешено в подзапросах.Но это должно быть хорошо.

0 голосов
/ 13 мая 2018

большое спасибо SELECT пользователя, sum (cnt) FROM (SELECT m.UserSend как пользователь, Count () AS cnt FROM сообщений AS m GROUP BY m.UserSend; СОЮЗ ВСЕХ ВЫБОР F.UserRequest, Count () AS cnt ИЗ ИзбранноеСписок AS F GROUP BY F.UserRequest) как пользователь GROUP BY;

0 голосов
/ 13 мая 2018

Вы можете попробовать использовать сумму полученной таблицы

select t.my_user, sum(Expr1)
from (
    SELECT m.UserSend as  my_user, Count(*) AS Expr1
    FROM Messages AS m
    GROUP BY m.UserSend;
    union
    SELECT F.UserRequest, Count(*) AS Expr1
    FROM FavoritesList AS F
    GROUP BY F.UserRequest;
) t 
group by t.my_user
...