SQL 模拟生成商品订单表

想练习 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)

猜你喜欢

转载自blog.csdn.net/itnerd/article/details/107877567