【发布时间】:2020-01-20 21:40:13
【问题描述】:
我有以下疑问:
With Summary as (
Select a.ASSN As Association
,SUM(tonnage_adjusted) as TotalTonnage
,SUM(case when remarks = '' THEN tonnage_adjusted ELSE NULL END) as Monitored
,SUM(case when remarks = 'NO_TICKET' THEN tonnage_adjusted ELSE NULL END) as NotMonitored
From DeliveryTons d INNER JOIN FarmerGroups a ON d.reaping_code = a.REAPING_GROUP_CODE
WHERE reaping_code IS NOT NULL AND d.crop_season = 4
Group By a.ASSN
)
SELECT Association
,TotalTonnage
, COALESCE(Monitored,0) As Monitored
, COALESCE(NotMonitored,0)As NotMonitored
, COALESCE(((Monitored/TotalTonnage) * 100),0) as pct_Monitored
FROM Summary
Order by Association,TotalTonnage
以及下表示例:
交货吨数
id | parcel_id | crop_season | tonnage_adjusted | reaping_code | remarks
1 012-0075 4 25.60 NSCGA12
2 011-0089 3 17.58 PSCPA NO_TICKET
3 001-0541 3 14.58 PSCPA
4 2 18.50 NSCGA12 NO_TICKER
农民组
ID | ASSN | REAPING_GROUP_CODE | CROP_SEASON
1 CSCPA NSCGA12 4
2 PSCPA PSCPA 3
3 PSCPA NSCGA12 4
我想通过关联获得tonnage_adjusted 总数,但是我得到的tonnage_adjusted 总和似乎比crop_season 实际的要高。几乎就像从其他crop_seasons 中提取数据一样。谁能看看sql有没有问题?
【问题讨论】:
-
您可能需要将
AND d.crop_season = a.crop_season添加到您的JOIN条件中 -
这样做给了我更多的钱
-
这似乎很奇怪,因为添加该条件应该进一步限制行数,而不是增加行数。不幸的是,您没有提供足够的样本数据来重现问题,如果您可以使用更多数据编辑问题以便重现问题,那么它会更容易回答。
-
@Kaii 抱歉,这不会导致更多行
-
给定示例的预期输出是什么?