我的SQL查询存在什么问题?我需按关联类型统计数量
问题排查与修正
你的SQL无法按关联类型统计数量,核心问题出在分组逻辑错误,具体问题和修正方案如下:
问题点
- 错误把
[app_num]加入GROUP BY,导致每个单独的app_num都会生成一行结果,无法按关联类型(NEW_TO_BANK/BANK_AFFILIATE)合并统计总数 DISTINCT与GROUP BY同时使用完全多余,GROUP BY本身就会生成唯一的分组结果
修正后的查询(统计每个关联类型的唯一APP数量)
SELECT COUNT(DISTINCT [app_num]) AS APPS, CASE WHEN [adm_td_rel_code] = 'NB' THEN 'NEW_TO_BANK' ELSE 'BANK_AFFILIATE' END AS AFFILIATION FROM [USB_Repository].[dbo].[APP_ANALYSIS] WHERE decsn_dt BETWEEN '2022-01-01' AND '2022-12-31' GROUP BY CASE WHEN [adm_td_rel_code] = 'NB' THEN 'NEW_TO_BANK' ELSE 'BANK_AFFILIATE' END
也可以按原始编码分组后映射类型,结果一致:
SELECT COUNT(DISTINCT [app_num]) AS APPS, CASE WHEN [adm_td_rel_code] = 'NB' THEN 'NEW_TO_BANK' ELSE 'BANK_AFFILIATE' END AS AFFILIATION FROM [USB_Repository].[dbo].[APP_ANALYSIS] WHERE decsn_dt BETWEEN '2022-01-01' AND '2022-12-31' GROUP BY [adm_td_rel_code]
补充说明
如果需要统计每个关联类型下的总记录数(而非唯一APP数),把COUNT(DISTINCT [app_num])替换成COUNT(*)即可。
内容的提问来源于stack exchange,提问作者Lewis
相关产品推荐
相关产品推荐

