gpt4 book ai didi

sql - 计数的除法在完整代码中不起作用

转载 作者:行者123 更新时间:2023-12-04 10:09:33 30 4
gpt4 key购买 nike

我确实遇到了一个任务问题,因为当我单独使用它和在完整代码中使用它时,我的除法值是不同的。假设我执行以下代码:

SELECT (count(paimta))::numeric / count(distinct paimta) as average
FROM Stud.Egzempliorius;

最后我得到的数字是 2.(6)7,但是当我在完整代码中使用它时:
SELECT Stud.Egzempliorius.Paimta, COUNT(PAIMTA) as PaimtaKnyga

FROM Stud.Skaitytojas, Stud.Egzempliorius

WHERE Stud.Skaitytojas.Nr=Stud.Egzempliorius.Skaitytojas

GROUP BY Stud.Egzempliorius.Paimta

HAVING count(paimta) > (count(paimta))::numeric / count(distinct paimta);

它的值(value)发生了变化,因为除法不再起作用,让我们说而不是
    HAVING count(paimta) > (count(paimta))::numeric / count(distinct paimta);

我的代码变成
    HAVING count(paimta) > (count(paimta))::numeric;

而且这些值是相等的,所以我无法得到最终答案。这是我使用的数据库 https://klevas.mif.vu.lt/~baronas/dbvs/biblio/show-table.php?table=Stud.Egzempliorius

我现在挣扎了 10 个小时,最后我失去了耐心......所以,我的问题是我必须做的这段代码:
SELECT (count(paimta))::numeric / count(distinct paimta) as average
FROM Stud.Egzempliorius;

完整代码中的值不会改变?

图片如何变化 Photo

最佳答案

您的解决方案失败,因为这两个查询对不同的行组进行操作。第一个查询对整个数据集进行计算,而第二个查询按 paimta 分组。 .

一种选择是使用窗口函数,但就 Postgres 不支持 count(distinct) 而言。作为窗函数。

我认为最简单的方法是使用子查询:

select e.paimta, count(paimta) as paimtaknyga
from stud.skaitytojas s
inner join stud.egzempliorius e on s.nr = e.skaitytojas
group by e.paimta
having count(paimta) > (
select (count(paimta))::numeric / count(distinct paimta) from stud.egzempliorius
)

关于sql - 计数的除法在完整代码中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61397320/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com