EFCore SUM и ROUND в избранном - PullRequest
0 голосов
/ 10 ноября 2019

У меня есть этот запрос

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. Я хочу избежать подзапросов, и в конце запрос должен быть по крайней мере похож на исходный.

...