SQL小挑战——第3期(电影院选择连续座位)

查询所用的表:cinema
seat_id(座位号,依次递增),free(0表示有人,1表示空座),fare(对应座位的票价)
SQL小挑战——第3期(电影院选择连续座位)_第1张图片

  • 1、要求定的座位必须是连续的,输出可用位置的seat_id
select c1.seat_id,c2.seat_id from 
(select * from cinema where free=1) c1 join
(select * from cinema where free=1) c2 on c1.seat_id=c2.seat_id-1

输出结果为:

c1.seat_id c2.seat_id
4 5
8 9
11 12
12 13
13 14

补充:此处忽略电影院座位的实际布局

  • 2、要求买连续的座位中总票价最低的两个座位,输出对应的seat_id和相应的总票价
select m.seat_1,m.seat_2,m.total_fare
from(
	select c1.seat_id seat_1,c2.seat_id seat_2,c1.fare+c2.fare total_fare from 
	(select * from cinema where free=1) c1 join
	(select * from cinema where free=1) c2 on c1.seat_id=c2.seat_id-1
	) m
order by m.total_fare
limit 1 --只输出第一行

你可能感兴趣的:(SQL)