想练习 SQL 却苦于无数据?不存在的!
所有的数据都可以人工生成!
比方说你需要练习操作用户交易表,包含 userid(用户ID)、orderid(订单ID)、amount(订单金额)、paytime(支付时间)这几个字段,如下所示:
/**********************************
现在数据库中有一张用户交易表order,
其中有userid(用户ID)、orderid(订单ID)、amount(订单金额)、paytime(支付时间),
请写出对应的SQL语句,
查出每个月的新客数(新客指在严选首次支付的用户),
当月有复购的新客数,
新客当月复购率(公式=当月有复购的新客数/月总新客数)
************************************/
create table order
(
userid int not null,
orderid int not null,
amount int not null,
paytime datetime not null
);
没有真实数据?自己生成吧!
from random import randint
from datetime import datetime, timedelta
dt = datetime(2020,1,1, 0, 0, 0)
for orderid in range(1,9999):
userid = randint(0,99999)
amount = randint(10,1000)
dt += timedelta(
0,
0,
0,
0, # hour
randint(0,3), # minute
randint(1,3)) # second
print('({:5d},{:4d},{:4d},{})'.format(userid, orderid, amount, dt.strftime("%Y-%m-%d %H:%M:%S")))
结果展示:
(21095, 1, 472,2020-01-01 02:00:00)
(86110, 2, 738,2020-01-01 03:01:00)
(15805, 3, 118,2020-01-01 06:04:00)
(95784, 4, 208,2020-01-01 07:06:00)
(43824, 5, 107,2020-01-01 09:07:00)
(91332, 6, 482,2020-01-01 11:10:00)
(34188, 7, 218,2020-01-01 13:12:00)
(96293, 8, 445,2020-01-01 16:14:00)
...
(70821,9990, 323,2022-04-24 05:59:00)
(15333,9991, 439,2022-04-24 08:59:00)
(77790,9992, 989,2022-04-24 11:02:00)
(63495,9993, 688,2022-04-24 13:04:00)
(81080,9994, 703,2022-04-24 15:06:00)
(92776,9995, 564,2022-04-24 18:09:00)
(35396,9996, 854,2022-04-24 21:10:00)
(42765,9997, 914,2022-04-25 00:11:00)
(90937,9998, 554,2022-04-25 01:11:00)