我想在计算 num_zaprosa 和 num_otveta 的计数时考虑所有记录,但如果其中之一为空,则不在结果集中显示它们。是否有可能做到这一点?这是我的代码,但它并没有帮助我解决我的问题:
WITH counted_records AS (
SELECT num_zaprosa, num_otveta,
COUNT(*) AS count_all_records,
SUM(CASE WHEN num_zaprosa IS NOT NULL THEN 1 ELSE 0 END) AS count_num_zaprosa,
SUM(CASE WHEN num_otveta IS NOT NULL THEN 1 ELSE 0 END) AS count_num_otveta
FROM your_table
GROUP BY num_zaprosa, num_otveta
)
SELECT num_zaprosa, num_otveta, count_all_records, count_num_zaprosa, count_num_otveta
FROM counted_records
WHERE num_zaprosa IS NOT NULL OR num_otveta IS NOT NULL;
初始数据:
num_zaprosa|num_otveta
______________________
2344 | 200
22 | null
2344 | 200
155 | 6
22 | 9999
我期望什么结果:
num_zaprosa|num_otveta| count_num_zaprosa| count_num_otveta |
_____________________________________________________________
2344 | 200 | 2 | 2 |
_____________________________________________________________
22 | 9999 | 2 | 1 |
_____________________________________________________________
155 | 6 | 1 | 1 |
WITH counted_records AS (
SELECT num_zaprosa, num_otveta,
COUNT(*) AS count_all_records,
SUM(COUNT(num_zaprosa)) OVER () AS count_num_zaprosa,
SUM(COUNT(num_otveta)) OVER () AS count_num_otveta
FROM your_table
GROUP BY num_zaprosa, num_otveta
)
SELECT num_zaprosa, num_otveta, count_all_records, count_num_zaprosa, count_num_otveta
FROM counted_records
WHERE num_zaprosa IS NOT NULL OR num_otveta IS NOT NULL;