我正在尝试计算日期范围内每个深度的风险总和和百分比,总和是正确的,但百分比全为零,我的查询出了什么问题?
SELECT
e.entity_uuid AS "entityUuid",
SUM(e.count) as "total",
(e.count/SUM(e.count) OVER ()) AS "percentage"
FROM address_entity e
WHERE e.depth = 1
AND e.monitoring_report_id IN (
SELECT m.id FROM monitoring_report m
WHERE m.report_date BETWEEN '2020-03-01' AND '2020-03-29')
AND e.entity_uuid IN ('393996d1-8df4-414f-8534-bd96f49ce16d','b6497c14-4264-4054-abd3-cb8594fb5072','c2fd62b3-47b3-4fd9-a4ff-a9cf847cd134','e9fa9758-e856-4ce1-9a3a-d0d4b0c35977','5dd4b3b6-cebd-4ce6-93fd-6e59ba8420e7','10d31034-2725-4ac5-937e-4b84e90e3be9')
AND e.category IN ( SELECT category_uuid FROM wiki_entity WHERE risky = 1)
GROUP BY e.entity_uuid, e.count
ORDER BY e.entity_uuid
结果:
猜测e.count
是integer
值:您正在计算integer
除法:
SELECT 1/2 -- == 0
但是您可以将其转换为decimal
类型:
SELECT 1/2::decimal -- == 0.5
就您而言,是指:
SELECT
...
(e.count/SUM(e.count)::decimal OVER ()) AS "percentage"
...