У меня есть этот запрос
SELECT
ROUND(SUM(u.position / f.duration) / COUNT(DISTINCT c.id)) as seenRate
FROM Parent c
LEFT JOIN seen_content u ON u.parent_id = c.id
LEFT JOIN files f ON f.id = u.file_id
WHERE
u.date_update - u.date_activate >= u.position AND
u.position >= f.duration * 0.9
GROUP BY c.id
И до сих пор этот запрос выдвигался
from c in dataContext.Set<ParentEntity>()
from u in dataContext.Set<SeenContentEntity>().Where(u => u.ParentId == c.Id)
from f in dataContext.Set<FileEntity>().Where(f => u.FileId == f.Id)
where
EF.Functions.DateDiffMinute(u.DateUpdate, u.DateActivate) > u.Position &&
u.Position >= f.Duration * 0.9
select new
{
c,
u,
f
}
Однако я изо всех сил пытаюсь сделать выбор с помощью ROUND
и SUM
. Я хочу избежать подзапросов, и в конце запрос должен быть по крайней мере похож на исходный.