我有一张收入表
title_id revenue cost
1 10 5
2 10 5
3 10 5
4 10 5
1 20 6
2 20 6
3 20 6
4 20 6
当我执行此查询
SELECT SUM(revenue),SUM(cost)
FROM revenue
GROUP BY revenue.title_id
它产生结果
title_id revenue cost
1 30 11
2 30 11
3 30 11
4 30 11
没关系,现在我想将求和结果与另一个具有这种结构的表合并
title_id interest
1 10
2 10
3 10
4 10
1 20
2 20
3 20
4 20
当我执行这样的聚合函数加入时
SELECT SUM(revenue),SUM(cost),SUM(interest)
FROM revenue
LEFT JOIN fund ON revenue.title_id = fund.title_id
GROUP BY revenue.title_id,fund.title_id
结果翻倍
title_id revenue cost interest
1 60 22 60
2 60 22 60
3 60 22 60
4 60 22 60
我不明白为什么加倍,请帮忙
它翻倍,因为您在基金和收入表中重复了标题。这将匹配的记录数相乘。如果删除聚合函数并查看原始数据,这很容易看到。看这里
解决此问题的方法是创建聚合的内联视图,并加入这些结果。
SELECT R.title_id,
R.revenue,
R.cost,
F.interest
FROM (SELECT title_id,
Sum(revenue) revenue,
Sum(cost) cost
FROM revenue
GROUP BY revenue.title_id) r
LEFT JOIN (SELECT title_id,
Sum(interest) interest
FROM fund
GROUP BY title_id) f
ON r.title_id = F.title_id
输出
| TITLE_ID | REVENUE | COST | INTEREST |
----------------------------------------
| 1 | 30 | 11 | 30 |
| 2 | 30 | 11 | 30 |
| 3 | 30 | 11 | 30 |
| 4 | 30 | 11 | 30 |
演示
问题内容: 表:购物 桌子:香蕉 我现在要打印: 姓名:汤姆| 时间:20 | 香蕉:0 名称:Brian | 时间:101 | 香蕉2 我使用了以下代码: 问题是我得到了这个: 姓名:汤姆| 时间:20 | 香蕉:0 名称:Brian | 时间:202 | 香蕉6 我只是不知道该如何解决。 问题答案: 问题是使用*(因为您正在使用分组依据)。另外,SUM(shop_time)被乘以香蕉中的尽可能
问题内容: 有人可以帮忙我的SQL吗? 我有一个表,其中包含诸如: 如何编写SQL查询以获取以下输出? 问题答案: 试试这个:
如果问题模棱两可,请道歉。
我想连接payara服务器和MySQL服务器。 我的所作所为? 我为MySQL下载了Connector/J。 我把它放在C:\users\someuser\desktop\payara5\glassfish\domains\domain1\lib\ext中 我启动了payara服务器。 我在localhost:4848上创建了连接池。 我试着ping但每次都出错。 详情: > Payara版本:5
我有一个以Mysql为数据库的应用程序,它使用了大量的XML/HTML。我想在BaseX中处理mysql数据,并通过它更新数据库。有什么简单的方法连接数据库吗?我检查了http://docs.basex.org/wiki/sql,但它不起作用。你能给我一个简单的例子我必须做什么来连接吗?出现SQL异常:“找不到适用于jdbc:mysql://localhost:3306/test的驱动程序”这是我
在使用mysql连接Eclipse时出现此错误,任何人都可以提供帮助。 不建议在没有服务器身份验证的情况下建立SSL连接。 根据MySQL 5.5.45、5.6.26和5.7.6的要求,如果未设置explicit选项,默认情况下必须建立SSL连接。为了符合不使用SSL的现有应用程序,verifyServerCertificate属性设置为“false”。您需要通过设置显式禁用SSL,或者设置并为服