根据一个表添加一列

时间:2018-01-31 02:16:06

标签: mysql

我有一个面试问题,涉及如何根据一个表添加一个列。

名为num_users的表格有两列datecount_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');

2 个答案:

答案 0 :(得分:0)

您可以使用 ALTER 向表中添加列 你会想要考虑

  • 您的列是否可以为空?
  • 如果您能够添加列或需要先删除表
  • 您要使用的数据类型
  • 数据集有多大?例如,您可以选择 tiny int bigint int 等。

这应该是一个简单的例子:

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);