【问题标题】:SQL Server Query to find CHI-SQUARE Values (Not Working)SQL Server 查询以查找 CHI-SQUARE 值(不工作)
【发布时间】:2013-08-02 10:41:57
【问题描述】:

我正在尝试从我对示例数据的以下 SQL Server 查询中找到卡方检验:

 SELECT sessionnumber, sessioncount, timespent, expected, dev, dev*dev/expected as    chi_square
 FROM (SELECT clusters.sessionnumber, clusters.sessioncount, clusters.timespent,
 (dim1.cnt * dim2.cnt * dim3.cnt)/(dimall.cnt*dimall.cnt) as expected,
 clusters.cnt-(dim1.cnt * dim2.cnt * dim3.cnt)/(dimall.cnt*dimall.cnt) as dev
 FROM clusters JOIN
 (SELECT sessionnumber, SUM(cnt) as cnt FROM clusters
 GROUP BY sessionnumber) dim1 ON clusters.sessionnumber = dim1.sessionnumber JOIN
 (SELECT sessioncount, SUM(cnt) as cnt FROM clusters
 GROUP BY sessioncount) dim2 ON clusters.sessioncount = dim2.sessioncount JOIN
 (SELECT timespent, SUM(cnt) as cnt FROM clusters
 GROUP BY timespent) dim3 ON clusters.timespent = dim3.timespent CROSS JOIN
 (SELECT SUM(cnt) as cnt FROM clusters) dimall) a

我的表有这样的样本数据:

sessionnumber   sessioncount    timespent       cnt
1                  17               28          NULL
2                  22               8           NULL
3                  1                1           NULL
4                  1                1           NULL
5                  8               111          NULL
6                  8                65          NULL
7                  11               5           NULL
8                  1                1           NULL
9                  62               64          NULL
10                 6                42          NULL

问题是这个查询工作正常,但它给出了错误的输出,或者你可以说根本没有输出。它给我的输出是这样的:

sessionnumber   sessioncount    timespent       expected    dev     chi_square
1               17              28              NULL        NULL    NUL
2               22              8               NULL        NULL    NULL
3               1               1               NULL        NULL    NULL
4               1               1               NULL        NULL    NULL
5               8               111             NULL        NULL    NULL
6               8               65              NULL        NULL    NULL
7               11              5               NULL        NULL    NULL
8               1               1               NULL        NULL    NULL
9               62              64              NULL        NULL    NULL
10              6               42              NULL        NULL    NULL

我怎么能摆脱这个问题,因为我已经尽力了!提前谢谢告诉我我做错了什么!

【问题讨论】:

    标签: sql sql-server-2008 null chi-squared


    【解决方案1】:

    在您的示例数据中,cnt 为 NULL,因此结果也为 NULL。可以使用 ISNULL 将这些 NULL 值替换为默认值(例如 1,我不知道上下文是什么),例如

    SELECT sessionnumber, SUM(ISNULL(cnt, 1)) as cnt FROM clusters GROUP BY sessionnumber
    

    【讨论】:

    • 我投了赞成票,但默认值可能是1 而不是0
    • 是的,可能是 1,因为他在分区中使用它 :) 但就像我说的,这只是一个如何做的例子。我刚刚编辑了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 2010-10-16
    相关资源
    最近更新 更多