作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望对某个演出的票数+该演出的总收入与所有演出的总收入进行比较。我已经成功计算出预订的票数,但是完整的查询无法正常工作,并给了我错误。
示例结果如下:
`tickets booked = 9
total revenue of the performance = xxx$
total revenue of all the performances = xxx$
SET @performancerevenue = '50 Shades of Grey';
select distinct P.perName as Performance,
(select COUNT(ticketBooked) from bookings as B
inner join performances as P on
B.perID = p.perID where perName = @performancerevenue) as
[Number of Ticket Booked ],
CAST(AVG((T.ticketPrice*left(B.totalCost,1))) over() as decimal(6,2)) as[Total Revenue from the performance (£)],
CAST(AVG(convert(decimal(5,2),(left(PY.totalAmount,1)))) over() as decimal(5,2)) as [Total revenue]
from performances as P
inner join tickets as T
on T.perID = P.perID
inner join bookings as B
on T.bookingID = B.bookingID
inner join payments as PY
where P.perName = @performancerevenue
CREATE TABLE bookings(
bookingID int IDENTITY (1,1) NOT NULL,
customerID int ,
clerkID varchar (20) ,
perID int,
ticketBooked int,
bookingDate Date,
bookingTime time,
bookingType varchar(20),
totalCost decimal(5,2),
PRIMARY KEY (bookingID),
FOREIGN KEY (customerID) REFERENCES customers,
FOREIGN Key (clerkID) REFERENCES clerks,);
insert into bookings values (16, 'clerk04', 1, 2, '2015-02-24', '12:00', 'Normal', '20');
insert into bookings values (2, 'clerk02', 20,3, '2015-02-25', '15:00', 'Advance', '34');
insert into bookings values (10, 'clerk04', 3,5, '2015-02-17', '18:00', 'Advance', '75');
insert into bookings values (5, 'clerk01', 19,2, '2015-01-24', '21:00', 'Advance', '30');
insert into bookings values (13, 'clerk01', 4,1, '2015-02-05', '12:00', 'Normal', '10');
insert into bookings values (20, 'clerk04', 5,1,'2015-01-26', '15:00', 'Normal', '12');
insert into bookings values (4, 'clerk03', 6, 3,'2015-02-09', '18:00', 'Advance', '30');
insert into bookings values (1, 'clerk03', 2, 1,'2015-01-03', '21:00', 'Advance', '15');
insert into bookings values (17, 'clerk04', 3, 1,'2015-02-09', '12:00', 'Normal', '12');
CREATE TABLE performances(
perID int IDENTITY (1,1)NOT NULL,
perName varchar (50),
perTime Time,
perDate Date,
perType varchar (20),
duration varchar (10),
screenNo int,
rating varchar (10),
location varchar (10),
PRIMARY KEY (perID),);
insert into performances values ('50 Shades of Grey', '12:00', '2015-03-08', 'Movie', '2hrs', '3', 'PG', 'Chelmsford');
insert into performances values ('50 Shades of Grey', '15:00', '2015-02-20', 'Movie', '2hrs', '2', '18', 'Chelmsford');
insert into performances values ('50 Shades of Grey', '18:00', '2015-02-26', 'Movie', '2hrs', '3', '18', 'Chelmsford');
insert into performances values ('50 Shades of Grey', '21:00', '2015-03-28', 'Movie', '2hrs', '2', 'PG', 'Chelmsford');
insert into performances values ('Paddington', '12:00', '2015-03-26', 'Movie', '2:30hrs', '2', '18', 'Chelmsford');
insert into performances values ('Paddington', '15:00', '2015-03-03', 'Movie', '2:30hrs', '3', 'PG', 'Chelmsford');
insert into performances values ('Paddington', '18:00', '2015-02-02', 'Movie', '2:3hrs', '3', 'PG', 'Chelmsford');
insert into performances values ('Paddington', '21:00', '2015-03-31', 'Movie', '2:30hrs', '1', '18', 'Chelmsford');
insert into performances values ('Shakespeare', '12:00', '2015-02-25', 'Movie', '3hrs', '2', '18', 'Chelmsford');
insert into performances values ('Shakespeare', '15:00', '2015-02-06', 'Movie', '3hrs', '3', 'PG', 'Chelmsford');
insert into performances values ('Shakespeare', '18:00', '2015-02-13', 'Movie', '3hrs', '3', '18', 'Chelmsford');
insert into performances values ('Shakespeare', '21:00', '2015-01-09', 'Movie', '3hrs', '3', 'PG', 'Chelmsford');
insert into performances values ('Jupiter Ascending', '12:00', '2015-01-11', 'Movie', '2:3hrs', '1', '18', 'Chelmsford');
insert into performances values ('Jupiter Ascending', '15:00', '2015-01-19', 'Movie', '2:30hrs', '2', '18', 'Chelmsford');
insert into performances values ('Jupiter Ascending', '18:00', '2015-02-06', 'Movie', '2:3hrs', '3', 'PG', 'Chelmsford');
insert into performances values ('Jupiter Ascending', '21:00', '2015-01-02', 'Movie', '2:3hrs', '2', 'PG', 'Chelmsford');
insert into performances values ('50 Shades of Grey', '12:00', '2015-01-06', 'Movie', '2hrs', '1', '18', 'Chelmsford');
insert into performances values ('50 Shades of Grey', '15:00', '2015-03-28', 'Movie', '2hrs', '3', 'PG', 'Chelmsford');
insert into performances values ('50 Shades of Grey', '18:00', '2015-02-09', 'Movie', '2hrs', '2', 'PG', 'Chelmsford');
insert into performances values ('50 Shades of Grey', '21:00', '2015-02-06', 'Movie', '2hrs', '2', '18', 'Chelmsford');
CREATE TABLE payments(
paymentID int IDENTITY (1,1) not null,
bookingID int,
totalAmount decimal (5,2),
paymentType varchar (20),
paymentDate Date,
PRIMARY KEY (paymentID),
FOREIGN KEY (bookingID) REFERENCES bookings,);
insert into payments values (1, 20, 'Cash', '2015-01-20');
insert into payments values (10, 20, 'Cash', '2015-01-17');
insert into payments values (12, 12, 'Credit/Debit Card', '2015-03-31');
insert into payments values (5, 10, 'Cash', '2015-01-08');
insert into payments values (18, 12, 'Cash', '2015-03-22');
insert into payments values (3, 75, 'Credit/Debit Card', '2015-02-21');
insert into payments values (2, 34, 'Credit/Debit Card', '2015-03-26');
insert into payments values (9, 12, 'Cash', '2015-03-26');
insert into payments values (13, 20, 'Credit/Debit Card', '2015-01-23');
insert into payments values (16, 20, 'Credit/Debit Card', '2015-03-08');
insert into payments values (11, 45, 'Credit/Debit Card', '2015-02-21');
insert into payments values (4, 30, 'Credit/Debit Card', '2015-02-08');
insert into payments values (7, 30, 'Cash', '2015-01-20');
insert into payments values (20, 30, 'Cash', '2015-02-26');
insert into payments values (14, 20, 'Credit/Debit Card', '2015-03-17');
insert into payments values (19, 45, 'Cash', '2015-01-10');
insert into payments values (6, 12, 'Credit/Debit Card', '2015-02-02');
insert into payments values (20, 30, 'Cash', '2015-02-01');
insert into payments values (17, 34, 'Credit/Debit Card', '2015-03-27');
insert into payments values (15, 15, 'Credit/Debit Card', '2015-02-14');
最佳答案
我认为您可以通过以下方式获得所需的结果:
SELECT DISTINCT
P.perName as [Perf],
SUM(B.ticketBooked) OVER(PARTITION BY P.perName) as [BookedTickets],
SUM(B.totalCost) OVER(PARTITION BY P.perName) as [PerfRevenue],
SUM(B.totalCost) OVER() as [TotalRevenue]
from bookings as B
inner join performances as P on B.perID = p.perID
------------------------------------------------------------
Perf BookedTickets PerfRevenue TotalRevenue
------------------+---------------+------------+------------
50 Shades of Grey 15 196.00 238.00
Paddington 4 42.00 238.00
关于sql - 查询以计算演出收入占所有演出总收入的比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29330236/
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
我是一名优秀的程序员,十分优秀!