【发布时间】:2021-05-09 00:52:50
【问题描述】:
使用包含许多字段的计算结果的临时表,我想计算表中每一列的方差。
问题是,如果我不使用 Coalesce 将空值替换为 0,查询总是返回空值。我不理解文档状态中使用 var 和 varp 函数忽略空值。
运行以下查询时,它给了我null。
WITH cte
AS (SELECT
*
FROM [IPA_10])
SELECT
var("Cell valide" + "Cell invalide" + "Compagnie valide" + "Compagnie invalide" + "Email 1 Invalide" + "Email 2 Invalide"
+ "Adresse Valide" + "Adresse à Valider" + "Adresse Retournée" + "Homme" + "Femme" + "Aucun Genre" +
"APS Fort" + "APS Moyen" + "APS Faible" + "APS Très Faible" + "Pas d'APS" + "Français" + "Anglais" + "Aucune Langue" +
"Home Phone Valide" + "Home Phone Invalide" + "MFR" + "Non MFR" + "NAS Valide" + "NAS Invalide" + "Other Phone 1 Valide" +
"Other Phone 1 Invalide" + "Other Phone 2 Valide" + "Other Phone 2 Invalide" + "Other Phone 3 Valide" + "Other Phone 3 Invalide" +
"Other Phone 4 Valide" + "Other Phone 4 Invalide" + "Phone Search 1 Valide" + "Phone Search 1 Invalide" + "Phone Search 2 Valide" +
"Phone Search 2 Invalide" + "Capital - < 100" + "Capital - 100-200" + "Capital - 200-300" + "Capital - 300-400" +
"Capital - 400-500" + "Capital - 500-600" + "Capital - 600-700" + "Capital - 700-800" + "Capital - 800-900" +
"Capital - 900-1000" + "Capital - 1000-1500" + "Capital - 1500-2500" + "Capital - > 2500" + "Délinquance – [0-3[" +
"Délinquance - [3-6[" + "Délinquance - [6-9[" + "Délinquance – [9-12[" + "Délinquance – [12-24[" +
"Délinquance – [25-36[" + "Délinquance – [36-84[" + "Délinquance – 84 &+" + "DDN - Aucune Valeur" + "Région Saguenay" +
"Région Outaouais" + "Région Ontario (qc)" + "Région Abitibi-Témiscamingue" + "Région Autres Provinces - États (qc)" +
"Région Bas Saint-Laurent" + "Région Capitale-Nationale" + "Région Centre-du-Québec" + "Région Chaudière-Appalache" +
"Région Côte-Nord" + "Région Estrie" + "Région Gaspésie" + "Région Lanaudière" + "Région Laurentides" + "Région Laval" +
"Région Mauricie" + "Région Montérégie" + "Région Montréal" + "Région Nord-du-Québec" + "Aucune région (qc)")
FROM cte
使用 coalsce 会给我一个结果,但是根据我的理解,这将是不准确的,因为它将被包含在方差计算中。 如何获得多列的方差?
【问题讨论】:
-
“我不理解文档中的说明,
var和varp函数会忽略空值。” 他们是。NULL不在连接或添加时被忽略。NULL + 1和'abc' + NULLboth 等于NULL。如果至少上述表达式中的一列是NULL,则整个表达式将返回NULL。我怀疑你想要的是CONCAT,而不是连接运算符(+)。
标签: sql sql-server variance