我有两个sql表,
表_1 如下:
datestamp items
2020-01-01 1
2020-01-01 33
2020-01-01 245
2020-01-01 55
2020-01-01 534
2020-01-01 35
2020-01-01 35
2020-01-02 10
2020-01-02 100
2020-01-02 50
2020-01-02 10
2020-01-02 1
2020-01-02 166
2020-01-02 76
2020-01-02 67
表_2 如下所示:
datestamp items_2
2020-01-01 346
2020-01-01 3623
2020-01-02 63
2020-01-02 73
我想要实现的是:
我尝试过的事情:
select datestamp, SUM(items) from table_1 group by datestamp
select datestamp, SUM(items_2) from table_2 group by datestamp
它返回预期的结果(数字是虚拟的):
2020-01-01 132
2020-01-02 432
2020-01-03 353
2020-01-01 563
2020-01-02 236
2020-01-03 364
当我尝试加入表格时:
select table_1.datestamp, table_1.SUM(items), table_2.SUM(items_2)
from table_1
left join table_2
on table_1.datestamp = table_2.datestamp
我得到:
无效的操作:模式“ table_1”不存在
我正在寻找的输出看起来像这样(数字是虚拟的):
datestamp items_1_sum items_2_sum difference
2020-01-01 346 525 items_2_sum-items_1_sum
2020-01-02 3623 352 63
2020-01-03 63 52 -36
2020-01-04 73 52 -352
我的错误在哪里,有没有更好的方法来实现所需的输出?
答案 0 :(得分:1)
您的求和函数应用错误,因此应使用分组依据:
select a.datestamp, sum(a.total), sum(b.total)
from (select datestamp, sum(items) as toatl
from table_1
group by datestamp) a
join (select datestamp, sum(items_2) as total
from table_2
group by datestamp) b on a.datestamp = b.datestamp
group by a.datestamp
编辑 我回答得太快了,我的错误,这样做会更好
2020-01-01 1 346
2020-01-01 33 346
2020-01-01 245 346
2020-01-01 55 346
2020-01-01 534 346
2020-01-01 35 346
2020-01-01 35 346
2020-01-01 1 3623
2020-01-01 33 3623
2020-01-01 245 3623
2020-01-01 55 3623
2020-01-01 534 3623
2020-01-01 35 3623
2020-01-01 35 3623
我的第一个查询是错误的,因为它将结果相乘。当您进行加入时,您将得到下一个结果(日期为2020-01-01):
{{1}}
因此,第一个表中的值乘以2,第二个表中的值乘以7