MYSQL求和、计数、分组时的乘法结果

标签 mysql

我想我需要一些帮助。现在尝试了数百万次不同的查询,但没有任何效果。我希望它对 t1.a 求和并计算 t2.b 并显示结果,但它会将两者相乘。

我尝试过左连接、右连接、无连接,但我认为我没有解决这个问题的技能!

$query ="SELECT t1.date, t1.a, t2.date, t2.b,
     SUM(t1.a) AS sum1,
     COUNT(t2.b) AS sum2
     FROM t1
     LEFT JOIN t2
     ON t1.date = t2.date
     GROUP BY t1.date, t2.date
     ";

t1:

id date        a
1  2019-05-01  5
2  2019-05-01  5
3  2019-05-01  5
4  2019-05-01  1
5  2019-05-01  1
6  2019-05-02  5
7  2019-05-02  5
8  2019-05-02  5

t2:

id date        b
1  2019-05-01  d
2  2019-05-01  d
3  2019-05-01  d
4  2019-05-02  d
5  2019-05-02  d
6  2019-05-02  d
7  2019-05-02  d
8  2019-05-02  d

结果是:

2019-05-01  51  15
2019-05-02  75  15

但应该是:

2019-05-01  17  3
2019-05-02  15  5

我做错了什么???

最佳答案

根据您的预期结果,您必须先对每个表进行分组,然后再加入它们:

SELECT 
  t1.date, t1.sum1, t2.sum2
FROM (
  SELECT t1.date, SUM(t1.a) AS sum1
  FROM t1 GROUP BY t1.date
) t1 LEFT JOIN (
  SELECT t2.date, COUNT(t2.b) AS sum2
  FROM t2 GROUP BY t2.date
) t2
ON t1.date = t2.date

参见 demo .
结果:

| date       | sum1 | sum2 |
| ---------- | ---- | ---- |
| 2019-05-01 | 17   | 3    |
| 2019-05-02 | 15   | 5    |

关于MYSQL求和、计数、分组时的乘法结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56210148/

相关文章:

MySQL 和外键。在允许的 NULL 值列上不允许 NULL

php - 使用 PHP 创建一个高效的好友列表

java - 如何读取Spring数据中的JSON字符串并写入数据库MySql

php - Doctrine 和 Symfony 中的 MySQL 用户定义变量

Mysql:扩展选择,包括原始表中丢失的记录

mysql - 如何使用管理员标志防止篡改?

php - 通过 PHP 避免 Mysql 中的重复

mysql - SQL查询中的多条件if语句

MySQL 根据前一条语句的结果进行选择

mysql - 大型 MySQL 转储的缓慢导入