SQL練習(xí)題三十一-每季十題(十)

350. 連續(xù)登陸大于等于7天的用戶,及連續(xù)登陸的開始,結(jié)束時間

create table my_data.log_user_login(
    user_name varchar(10),
    time_login DATETIME
);

insert into log_user_login value('aaa','2022-06-01 11:30:45');
insert into log_user_login value('aaa','2022-06-01 12:30:45');
insert into log_user_login value('aaa','2022-06-02 11:30:45');
insert into log_user_login value('aaa','2022-06-03 11:30:45');

insert into log_user_login value('aaa','2022-06-06 11:30:45');
insert into log_user_login value('aaa','2022-06-07 11:30:45');
insert into log_user_login value('aaa','2022-06-07 17:30:45');
insert into log_user_login value('aaa','2022-06-08 11:30:45');
insert into log_user_login value('aaa','2022-06-08 19:30:45');
insert into log_user_login value('aaa','2022-06-09 11:30:45');
insert into log_user_login value('aaa','2022-06-10 11:30:45');
insert into log_user_login value('aaa','2022-06-11 11:30:45');
insert into log_user_login value('aaa','2022-06-12 11:30:45');

insert into log_user_login value('bbb','2022-06-02 11:30:45');
insert into log_user_login value('bbb','2022-06-03 11:30:45');
insert into log_user_login value('bbb','2022-06-04 11:30:45');
insert into log_user_login value('bbb','2022-06-05 11:30:45');
insert into log_user_login value('bbb','2022-06-06 11:30:45');
insert into log_user_login value('bbb','2022-06-07 11:30:45');
insert into log_user_login value('bbb','2022-06-08 11:30:45');
insert into log_user_login value('bbb','2022-06-09 11:30:45');
insert into log_user_login value('bbb','2022-06-29 11:30:45');

非常經(jīng)典的題目,有重復(fù)數(shù)據(jù)先去重,然后row_number()開窗解決

MySQL DATE_SUB() 函數(shù)

select user_name,min(time_login) as start_time_login ,max(time_login) as end_time_login ,count(1) as login_day_cnt
from (
         select user_name, time_login, date_sub(time_login, INTERVAL rn DAY) as tag
         from (
                  select user_name,
                         time_login,
                         row_number() over (partition by user_name order by time_login) as rn
                  from (
                           select user_name, cast(time_login as date) as time_login
                           from log_user_login
                           group by user_name, cast(time_login as date)
                       ) t1
              ) t2
     ) t3
group by  user_name,tag
having count(1) >= 7 ;

351. 連續(xù)點(diǎn)擊大于等于三次的用戶數(shù),中間不能有別人的點(diǎn)擊

create table my_data.log_user_click_tf(
    user_name varchar(10),
    time_login DATETIME
);
insert into log_user_click_tf value('aaa','2022-06-01 11:30:45');
insert into log_user_click_tf value('aaa','2022-06-01 12:30:45');
insert into log_user_click_tf value('bbb','2022-06-01 13:30:45');
insert into log_user_click_tf value('aaa','2022-06-01 14:30:45');
insert into log_user_click_tf value('aaa','2022-06-01 15:30:45');
insert into log_user_click_tf value('ccc','2022-06-01 16:30:45');
insert into log_user_click_tf value('ccc','2022-06-01 18:30:45');
insert into log_user_click_tf value('ccc','2022-06-01 19:30:45');
insert into log_user_click_tf value('ccc','2022-06-01 20:30:45');
insert into log_user_click_tf value('ddd','2022-06-01 21:30:45');
insert into log_user_click_tf value('ddd','2022-06-01 22:30:45');
insert into log_user_click_tf value('ddd','2022-06-01 23:30:45');

偏移量函數(shù)的使用

select count(distinct user_name) as dis_cnt_user
from (
         select user_name,
                lag(user_name, 1) over (order by time_login) as before_1_user_name,
                lag(user_name, 2) over (order by time_login) as before_2_user_name
         from log_user_click_tf
     ) t1 where user_name = before_1_user_name and user_name = before_2_user_name

分組的使用

select
count(distinct user_name) as dis_cnt_user
from (
         select user_name
         from (
                  select user_name,
                         tag - group_tag as rn
                  from (
                           select user_name,
                                  row_number() over (partition by user_name order by time_login) as group_tag,
                                  row_number() over (order by time_login)                        as tag
                           from log_user_click_tf
                       ) t1
              ) t2
         group by user_name, rn
         having count(1) >= 3
     ) t3

352. 計(jì)算除去部門最高工資和最低工資的平均工資

create table deptno_salary_hr(
    user_name varchar(10),
    deptno int,
    salart double
);
insert into deptno_salary_hr value('a',1,10000);
insert into deptno_salary_hr value('b',1,20000);
insert into deptno_salary_hr value('c',1,30000);
insert into deptno_salary_hr value('d',1,40000);
insert into deptno_salary_hr value('e',1,50000);
insert into deptno_salary_hr value('f',1,60000);
insert into deptno_salary_hr value('a1',2,10000);
insert into deptno_salary_hr value('b1',2,10000);
insert into deptno_salary_hr value('c1',2,30000);
insert into deptno_salary_hr value('d1',2,40000);

正排和倒排的使用,求中位數(shù)也能用

select sum(salart) * 1.0 / count(1) as avg_salary
from (
         select deptno,
                salart,
                dense_rank() over (partition by deptno order by salart)       as asc_rn,
                dense_rank() over (partition by deptno order by salart desc ) as desc_rn
         from deptno_salary_hr
     ) t1
where asc_rn > 1 and desc_rn > 1
group by deptno

353. 留存率

格式

自聯(lián)結(jié)的應(yīng)用,有沒有更好的思路???


create  table log_user_view_retained_df(
      user_name varchar(10),
      time_login DATETIME
);


insert into log_user_view_retained_df value('a0','2022-06-01 23:30:45');
insert into log_user_view_retained_df value('a1','2022-06-01 23:30:45');
insert into log_user_view_retained_df value('a2','2022-06-01 23:30:45');
insert into log_user_view_retained_df value('a3','2022-06-01 23:30:45');
insert into log_user_view_retained_df value('a4','2022-06-01 23:30:45');
insert into log_user_view_retained_df value('a5','2022-06-01 23:30:45');
insert into log_user_view_retained_df value('a6','2022-06-01 23:30:45');
insert into log_user_view_retained_df value('a7','2022-06-01 23:30:45');
insert into log_user_view_retained_df value('a8','2022-06-01 23:30:45');
insert into log_user_view_retained_df value('a9','2022-06-01 23:30:45');

insert into log_user_view_retained_df value('a0','2022-06-02 23:30:45');
insert into log_user_view_retained_df value('a1','2022-06-02 23:30:45');
insert into log_user_view_retained_df value('a2','2022-06-02 23:30:45');
insert into log_user_view_retained_df value('a3','2022-06-02 23:30:45');
insert into log_user_view_retained_df value('a4','2022-06-02 23:30:45');
insert into log_user_view_retained_df value('a5','2022-06-02 23:30:45');
insert into log_user_view_retained_df value('a6','2022-06-02 23:30:45');
insert into log_user_view_retained_df value('a7','2022-06-02 23:30:45');

insert into log_user_view_retained_df value('a0','2022-06-03 23:30:45');
insert into log_user_view_retained_df value('a1','2022-06-03 23:30:45');
insert into log_user_view_retained_df value('a2','2022-06-03 23:30:45');
insert into log_user_view_retained_df value('a3','2022-06-03 23:30:45');
insert into log_user_view_retained_df value('a4','2022-06-03 23:30:45');
insert into log_user_view_retained_df value('a5','2022-06-03 23:30:45');
insert into log_user_view_retained_df value('a6','2022-06-03 23:30:45');
insert into log_user_view_retained_df value('a7','2022-06-03 23:30:45');

insert into log_user_view_retained_df value('a0','2022-06-04 23:30:45');
insert into log_user_view_retained_df value('a1','2022-06-04 23:30:45');

insert into log_user_view_retained_df value('a0','2022-06-05 23:30:45');
insert into log_user_view_retained_df value('a1','2022-06-05 23:30:45');

insert into log_user_view_retained_df value('a0','2022-06-06 23:30:45');
insert into log_user_view_retained_df value('a1','2022-06-06 23:30:45');

insert into log_user_view_retained_df value('a1','2022-06-07 23:30:45');
select
time_login,
count(distinct user_name) as '活躍用戶',
count(distinct case when interval_login =1 then user_name else null end ) as '次日留存用戶',
count(distinct case when interval_login =1 then user_name else null end ) / count(distinct user_name) as '次日留存率',
count(distinct case when interval_login =3 then user_name else null end ) as '三日留存用戶',
count(distinct case when interval_login =3 then user_name else null end ) / count(distinct user_name) as '三日留存率'
from (
         select t1.user_name,
                cast(t1.time_login as date) as time_login,
                datediff(cast(t2.time_login as date), cast(t1.time_login as date)) as interval_login
         from log_user_view_retained_df t1
                  join log_user_view_retained_df t2
                       on cast(t1.time_login as date) >= '2022-06-01' and cast(t1.time_login as date) <= '2022-06-30'
                           and cast(t2.time_login as date) >= '2022-06-01' and
                          cast(t2.time_login as date) <= '2022-06-30'
                           and t1.user_name = t2.user_name
     ) t3
group by time_login

354. 流失回歸率

分析統(tǒng)計(jì)6.1日活躍玩家的流失率回歸率,公式:流失3日回歸率 6/2-6/3未登陸但是6/4日登陸的玩家 / 6/2-6/3未登陸的玩家總數(shù)

with interval_cnt as (select count(1) as cnt from log_user_view_retained_df where cast(time_login as date)  = '2022-07-01'),
interval_user as (
select user_name from log_user_view_retained_df where cast(time_login as date)  = '2022-07-01'
    )
select start_login_time,user_cnt,user_cnt * 1.0 / if( cnt - sum(user_cnt) over (order by start_login_time rows  between  unbounded preceding and 1 preceding) is null ,0,cnt - sum(user_cnt) over (order by start_login_time rows  between  unbounded preceding and 1 preceding))
from (
select cast(start_login_timestamp as date) as  start_login_time,count(1) as user_cnt,cnt
from (
    # 取用戶在區(qū)間最早的登錄時間
         select t1.user_name, min(t1.time_login) as start_login_timestamp,cnt
         from log_user_view_retained_df t1
                  join interval_user t2
                       on t1.user_name = t2.user_name
                           and cast(t1.time_login as date) >  '2022-07-01' and
                          cast(t1.time_login as date) <= '2022-07-30'
                   join interval_cnt  tmp_cnt
         group by t1.user_name,cnt
     ) t3
group by cast(start_login_timestamp as date),cnt ) t4;

355. AB球隊(duì)得分流水表,得到連續(xù)三次得分的隊(duì)員名字和每次趕超對手的球員名字

連續(xù)三次得分的隊(duì)員名字:和連續(xù)點(diǎn)擊大于等于三次的用戶數(shù),中間不能有別人的點(diǎn)擊這題是一個思路

select  team,name
from (
         select team,
                name,
                lag(name, 1) over (partition by team order by score_time) as before_1_team_name,
                lag(name, 2) over (partition by team order by score_time) as before_2_team_name
         from team_score_detail
     ) t1
where name = before_1_team_name and name=before_2_team_name
group by team,name

思路二:兩兩分組,打標(biāo)簽

select team, name
from (
         select team, name, if(lag(name, 1) over (partition by team order by score_time) = name, 1, 0) as tag
         from team_score_detail
     ) t1
where  tag = 1
group by team,name,tag
having count(1) >= 3
# 也可以if判斷中打標(biāo)簽換過來,然后開窗累計(jì),不用過濾tag=1這種方式

每次趕超對手的球員名字,case when的使用

select team,
       name,
       A_sum_score ,
       B_sum_score
from (
         select team,
                name,
                A_sum_score ,
                B_sum_score,
                A_sum_score - B_sum_score                                    as c_score,
                lag(A_sum_score - B_sum_score, 1) over (order by score_time) as before_c_score
         from (
                  select team,
                         name,
                         score_time,
                         sum(A_score) over (order by score_time)  as A_sum_score,
                         sum(B_score) over ( order by score_time) as B_sum_score
                  from (
                           select team,
                                  name,
                                  score_time,
                                  case when team = 'A' then score else 0 end as A_score,
                                  case when team = 'B' then score else 0 end as B_score
                           from team_score_detail
                       ) t1
              ) t2
     ) t3 where c_score * before_c_score < 0
# c_score * before_c_score < 0說明就是反超

第一次不算,算的話,case when 判斷一下,不用c_score * before_c_score < 0

case when diff_score > 0 and lag(diff_score) over (order by score_time asc) < 0 then 1
              when diff_score < 0 and lag(diff_score) over (order by score_time asc) > 0 then 1
              when diff_score is not null and lag(diff_score) over (order by score_time asc) is null then 1
              else 0
         end

356. 拉鏈表

數(shù)據(jù)倉庫建模的一個體現(xiàn),非常經(jīng)典啊,我的經(jīng)驗(yàn)是只要是一個維度的分析(參與時間),基本都能用拉鏈表,多個維度分析,萬物皆可bitmap,哈哈哈

create table user_act_range(
first_dt    date,
guid        varchar(10),
range_start date,
range_end   date
);
# 初始化
insert into user_act_range value('2020-01-01','X0001','2020-01-01','2022-01-01');
insert into user_act_range value('2020-01-01','X0001','2020-03-01','9999-12-31');
insert into user_act_range value('2020-06-01','X0002','2022-06-01','9999-12-31');
insert into user_act_range value('2020-01-01','X0003','2020-01-01','2022-01-01');


# 用戶登陸表(就是今天有哪些用戶登陸了)
create table user_session_login(
     guid  varchar(10),
     login date
);
insert into user_session_login value('X0002','2022-06-26');
insert into user_session_login value('X0003','2022-06-26');
insert into user_session_login value('X0004','2022-06-26');

兩部分,第一部分今天登陸了,至少昨天沒有登陸的用戶單獨(dú)union all,第二部分兩張表full join 分類討論,封閉區(qū)間,9999-12-31,新用戶的情況

357. 認(rèn)識的組合數(shù)

快手面試題,非常經(jīng)典的題目,再寫一遍

需求:現(xiàn)有城市網(wǎng)吧訪問數(shù)據(jù)羞酗,字段:網(wǎng)吧id窘面,訪客id(身份證號),上線時間蓄喇,下線時間
規(guī)則1花鹅、如果有兩個用戶在一家網(wǎng)吧的前后上下線時間在10分鐘以內(nèi)氧腰,則兩人可能認(rèn)識
規(guī)則2、如果這兩個用戶在三家以上網(wǎng)吧出現(xiàn)【規(guī)則1】的情況刨肃,則兩人一定認(rèn)識
需求:
該城市上網(wǎng)用戶中兩人一定認(rèn)識的組合數(shù)

自聯(lián)結(jié)的應(yīng)用

設(shè)表名:table0
字段:wid 古拴, uid ,ontime 真友,offtime
select
    id,
    count(distinct wid) c
from
    (select
        wid,
        concat(t0.uid,t1.uid) as id
    from
        (select
            wid,
            uid,
            unix_timestamp(ontime,'yyyyMMdd HH:mm:ss') as ontime,
            unix_timestamp(offtime,'yyyyMMdd HH:mm:ss') as offtime
        from 
            table0
        )t0
    join
        (select
            wid,
            uid,
            unix_timestamp(ontime,'yyyyMMdd HH:mm:ss') as ontime,
            unix_timestamp(offtime,'yyyyMMdd HH:mm:ss') as offtime
        from 
            table0
        )t1
    on t0.wid=t1.wid
        and t0.uid>t1.uid
        and (abs(t0.ontime-t1.ontime)<10*60 or abs(t0.offtime-t1.offtime)<10*60)
        
    )t0
group by 
    id
having
    c>=3

思路是對的,沒測試...

select count(uid) as com_cnt
from(
    select uid,pre_uid
          ,count(distinct wid) as flag
    from(
        select wid
              ,uid
              ,abs(unix_timestamp(ontime,'yyyy-MM-dd HH:mm:ss')-unix_timestamp(lag(ontime,1,'1970-01-01 08:00:00') over(partition by wid order by ontime),'yyyy-MM-dd HH:mm:ss')) / 60 ontime_diff
              ,abs(unix_timestamp(offtime,'yyyy-MM-dd HH:mm:ss')-unix_timestamp(lag(offtime,1,'1970-01-01 08:00:00') over(partition by wid order by offtime),'yyyy-MM-dd HH:mm:ss')) / 60 offtime_diff
              ,lag(uid) over (partition by wid order by offtime) as pre_uid
        from table0
    ) m
    where  (ontime_diff<=10 or offtime_diff<=10)
    group by uid,pre_uid
) n
where flag>=3

358. 中位數(shù)

面試題,非常經(jīng)典的題目

表中保存了數(shù)字的值以及其個數(shù),求取中位數(shù),在此表中,數(shù)字為0,0,0,0,0,0,0,1,2,2,2.3,所以中位數(shù)為(0+0)/2

create  table if not exists c0629(
 Number int,Frequency INT
);
insert into  c0629 values (0,7),(1,1),(2,3),(3,1);

請編寫一個查詢來查找所有數(shù)字的中位數(shù)并將結(jié)果命名為 median 黄痪。注意:什么是中位數(shù)?當(dāng)一串?dāng)?shù)字是奇數(shù)個時盔然,例如8,3,5,1,4桅打。我們按順序排列后為:1,3,4,5,8。那么4就是中位數(shù)
當(dāng)一串?dāng)?shù)字為偶數(shù)個時愈案,例如8,3,5,1,4,2挺尾。我們按順序排列后為:1,2,3,4,5,8。那么(3+4)/2=3.5就是中位數(shù)站绪。

從位置上理解中位數(shù),正序逆序的應(yīng)用

select avg(number) as median
from
(select Number, frequency,
        sum(frequency) over(order by number asc) as total,
        sum(frequency) over(order by number desc) as total1
from c0629
order by number asc)as a
where total>=(select sum(frequency) from c0629)/2
and total1>=(select sum(frequency) from c0629)/2

看一下這種寫法...我已經(jīng)看不懂了..測試了一下....參考自連接比較法,第一步其實(shí)求取的比多少大,比多少小的問題
這里的中位數(shù)定義是,比中位數(shù)大的數(shù) - 比中位數(shù)下的數(shù)的絕對值是最小的(前提是沒有重復(fù)值),有重復(fù)值的情況下,選出equal大于或等于margin絕對值的num,為什么要這么做,如果(不大于或等于),那么就一定不是中位數(shù)呀
SQL筆面試題:如何求取中位數(shù)遭铺?

select
 Number,   (select sum(Frequency) from c0629 where Number <= n.Number), (select sum(Frequency) from c0629 where Number >= n.Number)
from
    c0629 as n

select
    avg(n.Number) as median
from
    c0629 as n
where
    n.Frequency >= abs(
        (select sum(Frequency) from c0629 where Number <= n.Number) -
        (select sum(Frequency) from c0629 where Number >= n.Number)
    );

359. 混合排序

非常經(jīng)典


示例

name 是店鋪名稱,名稱中帶有“-”表示分店崇众,score 是銷售額掂僵。出題人希望能依據(jù)城市、銷售額查看各個店鋪的銷售數(shù)據(jù)顷歌,并且當(dāng)存在分店時锰蓬,分店能緊挨在總店后面按照 id 排序

create table order_data (
     id int ,
     city varchar(1),
     name  varchar(4),
     score int
);

insert into order_data values (1,'a','A',100);
insert into order_data values (2,'a','A-1',80);
insert into order_data values (3,'b','C',70);
insert into order_data values (4,'a','A-2',90);
insert into order_data values (5,'b','D',85);
insert into order_data values (6,'b','B',75);
insert into order_data values (7,'b','E',30);
insert into order_data values (8,'b','B-1',50);
insert into order_data values (9,'a','F',95);
insert into order_data values (10,'b','G',65);
with  x as (
     select
     id, city, name, score,
           if( instr(name,'-'),substr(name,1,1),name  ) as base_name
     from order_data
)
select
x.id,x.city,x.name,
x.score,x.base_name,order_data.score
from order_data join x  on  order_data.name  = x.base_name
order by x.city,order_data.score desc,x.id;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市眯漩,隨后出現(xiàn)的幾起案子擎值,更是在濱河造成了極大的恐慌,老刑警劉巖遍略,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宦赠,死亡現(xiàn)場離奇詭異,居然都是意外死亡队萤,警方通過查閱死者的電腦和手機(jī)轮锥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來要尔,“玉大人舍杜,你說我怎么就攤上這事新娜。” “怎么了既绩?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵概龄,是天一觀的道長。 經(jīng)常有香客問我饲握,道長私杜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任救欧,我火速辦了婚禮衰粹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘颜矿。我一直安慰自己寄猩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布骑疆。 她就那樣靜靜地躺著田篇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪箍铭。 梳的紋絲不亂的頭發(fā)上泊柬,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機(jī)與錄音诈火,去河邊找鬼兽赁。 笑死,一個胖子當(dāng)著我的面吹牛冷守,可吹牛的內(nèi)容都是我干的刀崖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拍摇,長吁一口氣:“原來是場噩夢啊……” “哼亮钦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起充活,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蜂莉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后混卵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體映穗,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年幕随,在試婚紗的時候發(fā)現(xiàn)自己被綠了蚁滋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖枢赔,靈堂內(nèi)的尸體忽然破棺而出澄阳,到底是詐尸還是另有隱情,我是刑警寧澤踏拜,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站低剔,受9級特大地震影響速梗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜襟齿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一姻锁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧猜欺,春花似錦位隶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赋荆,卻和暖如春笋妥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背窄潭。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工春宣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嫉你。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓月帝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親幽污。 傳聞我的和親對象是個殘疾皇子嚷辅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容