我有一个面试问题,涉及如何根据一个表添加一个列。
名为num_users
的表格有两列date
,count_users
面试官希望我添加一个名为7days_later_count_user
的列我的代码是
select date, count_users,(select count_users from users where date = date -7) from users
但我无法得到答案。
表格是:
create table num_users
(
createdate timestamp default now(),
count_user int
);
insert into num_users
(count_user,createdate)
values
(100, '2017-02-16 18:22:10.846'),
(200, '2017-04-02 17:11:21.417'),
(300, '2017-02-21 11:12:32.574'),
(400, '2016-08-13 01:28:43.085'),
(600, '2016-12-07 01:04:39.298'),
(500, '2017-04-30 13:26:14.496'),
(99, '2016-12-12 06:50:07.996'),
(908, '2016-08-20 02:19:45.512'),
(43, '2016-06-24 19:36:30.978'),
(87, '2016-08-07 16:25:48.561'),
(777, '2017-05-04 16:32:15.577'),
(181, '2017-01-19 01:34:14.296');
答案 0 :(得分:0)
您可以使用 ALTER 向表中添加列 你会想要考虑
这应该是一个简单的例子:
ALTER TABLE num_users
ADD COLUMN 7days_later_count_user int
答案 1 :(得分:0)
根据您的查询,您可以检查同一个表中的子查询,该子查询获取七天后特定日期的数据。
注意:要获得下一个7天的信件日期,您可以使用间隔
select date, count_users,
(select count_users from users usr where users.date = date_add(usr.date, INTERVAL 7 DAY)) `7days_later_count_user`
from users
或者您可以使用内部联接...
select t1.date,t1.count_users,t2.count_users `7days_later_count_user` from users t1
inner join users t2 on t1.date = date_add(t2.date, INTERVAL 7 DAY)
注意:对于部分匹配,您可以使用
Left Outer Join
作为 相同的查询。
修改强> 这是因为您只有一个与给定数据匹配的检查,以下查询可能会帮助您根据需要获取exext数据。
select num_users.createdate,num_users.count_user,num_users1.count_user `7days_later_count_user` from num_users
left outer join num_users num_users1 on cast(num_users1.createdate as date) = cast(date_add(num_users.createdate, INTERVAL 7 DAY) as date);