Мне нужно создать запрос, который показывает среднюю производительность для редакторов, которые работали над более чем одной книгой, за исключением их первой опубликованной книги с точностью до 0,01 страниц в день.
У меня проблемынайти способ получить количество дней с последнего столбца DateOfPublication
и использовать его, чтобы отделить его от столбца NoOfPages
.
Отображаемые столбцы:
EditorName
BookName
вычисляемый столбец AverageProductivity
Вот таблицы и их столбцы
AGENT AgentID (PK,varchar(11), not null)
AgentName (varchar(25), not null)
BOOK BookName (PK, varchar(45), not null)
Genre (varchar(25), not null)
DateOfPublication (date, not null)
NoOfPages (int, not null)
WriterID (PK, FK,, varchar(11), not null)
EditorID (FK, varchar(11), not null)
EDITOR EditorID (PK, varchar(11), not null)
EditorName (varchar(25), not null)
Mentors_EditorID (FK, varchar(11), null)
WRITER WriterID (PK, varchar(11), not null)
WriterName (varchar(25), not null)
AgentID (FK, varchar(11), not null)
Пример данных
insert into BOOK (BookName, WriterID, Genre, DateOfPublication, NoOfPages, EditorID)
values ('Valley of Heroes','10','Fiction','2010-01-12',874,'20');
insert into BOOK (BookName, WriterID, Genre, DateOfPublication, NoOfPages, EditorID)
values ('The Ruler''s Return','11','Fantasy','2012-03-14',765,'22');
insert into BOOK (BookName, WriterID, Genre, DateOfPublication, NoOfPages, EditorID)
values ('eRobot','11','Fantasy','2011-04-15',264,'20');
insert into BOOK (BookName, WriterID, Genre, DateOfPublication, NoOfPages, EditorID)
values ('An Uncle''s Letters','12','Fiction','2012-06-12',258,'20');
insert into BOOK (BookName, WriterID, Genre, DateOfPublication, NoOfPages, EditorID)
values ('Pretty flowers','13','Album','2013-01-31',148,'22');
insert into BOOK (BookName, WriterID, Genre, DateOfPublication, NoOfPages, EditorID)
values ('A Tale of Lions','12','Fantasy','2012-08-17',301,'21');
insert into BOOK (BookName, WriterID, Genre, DateOfPublication, NoOfPages, EditorID)
values ('eRobot','13','Sci Fi','2012-10-04',465,'23');
Запрос теперь производит правильные столбцы, кредит GMB, но вычисленный столбец показывает 0 значений.
Вот запрос ...
select * from (
select
e.EditorName,
b.BookName,
round(
NoOfPages/datediff(
day,
lag(b.DateOfPublication) over(partition by b.EditorID order by b.DateOfPublication),
DateOfPublication
),
2
) AverageProductivity
from book b
inner join editor e on e.EditorID = b.EditorID
) x where AverageProductivity is not null
Results .. .
Melanie eRobot 0
Melanie An Uncle's Letters 0
George Pretty flowers 0