Sql 如何合并两个表并将其平均(小时表与每日表)
我有以下表格:Sql 如何合并两个表并将其平均(小时表与每日表),sql,sqlite,Sql,Sqlite,我有以下表格: CREATE TABLE a (DATE TEXT, PRICE INTEGER) INSERT INTO a VALUES ("2019-04-27", 10), ("2019-04-29",20), ("2019-04-30",30), ("2019-05-01",40); CREATE TABLE b (DATE TEXT, PRICE INTEGER) INSERT INTO b VALUES ("2019-04-27 01:00", 1), ("2019-0
CREATE TABLE a (DATE TEXT, PRICE INTEGER)
INSERT INTO a VALUES
("2019-04-27", 10), ("2019-04-29",20), ("2019-04-30",30), ("2019-05-01",40);
CREATE TABLE b (DATE TEXT, PRICE INTEGER)
INSERT INTO b VALUES
("2019-04-27 01:00", 1), ("2019-04-27 02:30)",3), ("2019-04-27 18:00",2),
("2019-04-28 17:00",2), ("2019-04-28 21:00",5),
("2019-04-29 17:00",50), ("2019-04-29 21:00",10),
("2019-04-30 17:00",10), ("2019-04-30 21:00",20),
("2019-05-01 17:00",40), ("2019-05-01 21:00",10),
("2019-05-02 17:00",10), ("2019-05-02 21:00",6);
我需要合并这两个表,以便表b平均到每日,表有两列(1是日期(所有日期都必须在那里),2是价格(如果没有对该日期的观察值,则为Null)。我尝试了几个左联接,但不知道如何解决无法将每小时数据平均到每日的问题。
你能帮忙吗
请按照以下步骤执行查询:
请按照以下步骤执行查询:
我怀疑您想要一个包含两列的结果集。我不喜欢将日期设置为字符串数据类型,但您可以根据需要使用字符串函数:
select date, sum(price_a) as price_a, sum(price_b) as price_b
from (select a.date, a.price as price_a, null as price_b
from a
union all
select substr(b.date, 1, 10), null, price
from b
) ab
group by date;
我怀疑您想要一个包含两列的结果集。我不喜欢将日期设置为字符串数据类型,但您可以根据需要使用字符串函数:
select date, sum(price_a) as price_a, sum(price_b) as price_b
from (select a.date, a.price as price_a, null as price_b
from a
union all
select substr(b.date, 1, 10), null, price
from b
) ab
group by date;
显示所需的结果。和spectfy MySQL版本-它对您的任务至关重要。MySQL或sqlite?日期文本?为什么不使用日期时间数据类型,毕竟您为它指定了日期时间的正确格式datatype@RiggsFolly:我认为OP使用的是sqlite-在这个数据库中,日期存储为
文本你的问题看起来很有意思,但没有预期的结果。我认为没有人能确定答案。显示期望的结果。还有spectfy MySQL版本-它对你的任务至关重要。MySQL或sqlite?日期文本
?既然你是givi,为什么不使用日期时间
数据类型将正确的日期格式设置为DateTimedatatype@RiggsFolly:我认为OP使用的是sqlite-在这个数据库中,日期存储为文本
。你真的应该显示你期望的结果。你的问题看起来很有趣,但没有预期的结果。我认为没有人可以确定它。谢谢你,它正在工作,但是ab在第7行是什么意思?@JohnMayer…这是一个表别名,SQL的一个非常重要的部分。谢谢,它正在工作,但是ab在第7行是什么意思?@JohnMayer…这是一个表别名,SQL的一个非常重要的部分。