@@ -7887,6 +7887,226 @@ where
78877887 },
78887888 },
78897889 },
7890+ {
7891+ Name : "std, stdev, stddev_pop, variance, var_pop, var_samp tests" ,
7892+ Dialect : "mysql" ,
7893+ SetUpScript : []string {
7894+ "create table t (i int);" ,
7895+ "create table tt (i int, j int);" ,
7896+ "insert into tt values (0, 1), (0, 2), (0, 3);" ,
7897+ "insert into tt values (1, 123), (1, 456), (1, 789);" ,
7898+ },
7899+ Assertions : []ScriptTestAssertion {
7900+ {
7901+ Query : "select std(i), stddev(i), stddev_pop(i), stddev_samp(i) from t;" ,
7902+ Expected : []sql.Row {
7903+ {nil , nil , nil , nil },
7904+ },
7905+ },
7906+ {
7907+ Query : "select variance(i), var_pop(i), var_samp(i) from t;" ,
7908+ Expected : []sql.Row {
7909+ {nil , nil , nil },
7910+ },
7911+ },
7912+ {
7913+ Query : "insert into t values (1);" ,
7914+ Expected : []sql.Row {
7915+ {types .NewOkResult (1 )},
7916+ },
7917+ },
7918+ {
7919+ Query : "select std(i), stddev(i), stddev_pop(i), stddev_samp(i) from t;" ,
7920+ Expected : []sql.Row {
7921+ {0.0 , 0.0 , 0.0 , nil },
7922+ },
7923+ },
7924+ {
7925+ Query : "select variance(i), var_pop(i), var_samp(i) from t;" ,
7926+ Expected : []sql.Row {
7927+ {0.0 , 0.0 , nil },
7928+ },
7929+ },
7930+ {
7931+ Query : "insert into t values (2);" ,
7932+ Expected : []sql.Row {
7933+ {types .NewOkResult (1 )},
7934+ },
7935+ },
7936+ {
7937+ Query : "select std(i), stddev(i), stddev_pop(i), stddev_samp(i) from t;" ,
7938+ Expected : []sql.Row {
7939+ {0.5 , 0.5 , 0.5 , 0.7071067811865476 },
7940+ },
7941+ },
7942+ {
7943+ Query : "select variance(i), var_pop(i), var_samp(i) from t;" ,
7944+ Expected : []sql.Row {
7945+ {0.25 , 0.25 , 0.5 },
7946+ },
7947+ },
7948+ {
7949+ Query : "insert into t values (3);" ,
7950+ Expected : []sql.Row {
7951+ {types .NewOkResult (1 )},
7952+ },
7953+ },
7954+ {
7955+ Query : "select std(i), stddev(i), stddev_pop(i), stddev_samp(i) from t;" ,
7956+ Expected : []sql.Row {
7957+ {0.816496580927726 , 0.816496580927726 , 0.816496580927726 , 1.0 },
7958+ },
7959+ },
7960+ {
7961+ Query : "select variance(i), var_pop(i), var_samp(i) from t;" ,
7962+ Expected : []sql.Row {
7963+ {0.6666666666666666 , 0.6666666666666666 , 1.0 },
7964+ },
7965+ },
7966+ {
7967+ Query : "insert into t values (null), (null);" ,
7968+ Expected : []sql.Row {
7969+ {types .NewOkResult (2 )},
7970+ },
7971+ },
7972+ {
7973+ Query : "select std(i), stddev(i), stddev_pop(i), stddev_samp(i) from t;" ,
7974+ Expected : []sql.Row {
7975+ {0.816496580927726 , 0.816496580927726 , 0.816496580927726 , 1.0 },
7976+ },
7977+ },
7978+ {
7979+ Query : "select variance(i), var_pop(i), var_samp(i) from t;" ,
7980+ Expected : []sql.Row {
7981+ {0.6666666666666666 , 0.6666666666666666 , 1.0 },
7982+ },
7983+ },
7984+ {
7985+ Query : "select i, std(j), stddev_samp(j) from tt group by i;" ,
7986+ Expected : []sql.Row {
7987+ {0 , 0.816496580927726 , 1.0 },
7988+ {1 , 271.89336144893275 , 333.0 },
7989+ },
7990+ },
7991+ {
7992+ Query : "select i, variance(i), var_samp(i) from tt group by i;" ,
7993+ Expected : []sql.Row {
7994+ {0 , 0.0 , 0.0 },
7995+ {1 , 0.0 , 0.0 },
7996+ },
7997+ },
7998+ {
7999+ Query : "select std(i) over(), std(j) over(), stddev_samp(j) over() from tt order by i;" ,
8000+ Expected : []sql.Row {
8001+ {0.5 , 297.47660972475353 , 325.86929895281634 },
8002+ {0.5 , 297.47660972475353 , 325.86929895281634 },
8003+ {0.5 , 297.47660972475353 , 325.86929895281634 },
8004+ {0.5 , 297.47660972475353 , 325.86929895281634 },
8005+ {0.5 , 297.47660972475353 , 325.86929895281634 },
8006+ {0.5 , 297.47660972475353 , 325.86929895281634 },
8007+ },
8008+ },
8009+ {
8010+ Query : "select i, std(j) over(partition by i), stddev_samp(j) over(partition by i) from tt order by i;" ,
8011+ Expected : []sql.Row {
8012+ {0 , 0.816496580927726 , 1.0 },
8013+ {0 , 0.816496580927726 , 1.0 },
8014+ {0 , 0.816496580927726 , 1.0 },
8015+ {1 , 271.89336144893275 , 333.0 },
8016+ {1 , 271.89336144893275 , 333.0 },
8017+ {1 , 271.89336144893275 , 333.0 },
8018+ },
8019+ },
8020+ {
8021+ Query : "select i, variance(i) over(), var_samp(i) over() from tt order by i;" ,
8022+ Expected : []sql.Row {
8023+ {0 , 0.25 , 0.3 },
8024+ {0 , 0.25 , 0.3 },
8025+ {0 , 0.25 , 0.3 },
8026+ {1 , 0.25 , 0.3 },
8027+ {1 , 0.25 , 0.3 },
8028+ {1 , 0.25 , 0.3 },
8029+ },
8030+ },
8031+ {
8032+ Query : "select i, variance(j) over(partition by i), var_samp(i) over(partition by i) from tt order by i;" ,
8033+ Expected : []sql.Row {
8034+ {0 , 0.6666666666666666 , 0.0 },
8035+ {0 , 0.6666666666666666 , 0.0 },
8036+ {0 , 0.6666666666666666 , 0.0 },
8037+ {1 , 73926.0 , 0.0 },
8038+ {1 , 73926.0 , 0.0 },
8039+ {1 , 73926.0 , 0.0 },
8040+ },
8041+ },
8042+ {
8043+ Query : "insert into tt values (null, null);" ,
8044+ Expected : []sql.Row {
8045+ {types .NewOkResult (1 )},
8046+ },
8047+ },
8048+ {
8049+ Query : "select i, std(i) over(), std(j) over(), stddev_samp(j) over() from tt order by i;" ,
8050+ Expected : []sql.Row {
8051+ {nil , 0.5 , 297.47660972475353 , 325.86929895281634 },
8052+ {0 , 0.5 , 297.47660972475353 , 325.86929895281634 },
8053+ {0 , 0.5 , 297.47660972475353 , 325.86929895281634 },
8054+ {0 , 0.5 , 297.47660972475353 , 325.86929895281634 },
8055+ {1 , 0.5 , 297.47660972475353 , 325.86929895281634 },
8056+ {1 , 0.5 , 297.47660972475353 , 325.86929895281634 },
8057+ {1 , 0.5 , 297.47660972475353 , 325.86929895281634 },
8058+ },
8059+ },
8060+ {
8061+ Query : "select i, std(j) over(partition by i), stddev_samp(j) over(partition by i) from tt order by i;" ,
8062+ Expected : []sql.Row {
8063+ {nil , nil , nil },
8064+ {0 , 0.816496580927726 , 1.0 },
8065+ {0 , 0.816496580927726 , 1.0 },
8066+ {0 , 0.816496580927726 , 1.0 },
8067+ {1 , 271.89336144893275 , 333.0 },
8068+ {1 , 271.89336144893275 , 333.0 },
8069+ {1 , 271.89336144893275 , 333.0 },
8070+ },
8071+ },
8072+ {
8073+ Query : "select i, variance(i) over(), var_samp(i) over() from tt order by i;" ,
8074+ Expected : []sql.Row {
8075+ {nil , 0.25 , 0.3 },
8076+ {0 , 0.25 , 0.3 },
8077+ {0 , 0.25 , 0.3 },
8078+ {0 , 0.25 , 0.3 },
8079+ {1 , 0.25 , 0.3 },
8080+ {1 , 0.25 , 0.3 },
8081+ {1 , 0.25 , 0.3 },
8082+ },
8083+ },
8084+ {
8085+ Query : "select i, variance(j) over(partition by i), var_samp(i) over(partition by i) from tt order by i;" ,
8086+ Expected : []sql.Row {
8087+ {nil , nil , nil },
8088+ {0 , 0.6666666666666666 , 0.0 },
8089+ {0 , 0.6666666666666666 , 0.0 },
8090+ {0 , 0.6666666666666666 , 0.0 },
8091+ {1 , 73926.0 , 0.0 },
8092+ {1 , 73926.0 , 0.0 },
8093+ {1 , 73926.0 , 0.0 },
8094+ },
8095+ },
8096+ {
8097+ Query : "select i, stddev_pop(j) over w, stddev_samp(j) over w, variance(j) over w, var_samp(i) over w from tt window w as (partition by i) order by i;" ,
8098+ Expected : []sql.Row {
8099+ {nil , nil , nil , nil , nil },
8100+ {0 , 0.816496580927726 , 1.0 , 0.6666666666666666 , 0.0 },
8101+ {0 , 0.816496580927726 , 1.0 , 0.6666666666666666 , 0.0 },
8102+ {0 , 0.816496580927726 , 1.0 , 0.6666666666666666 , 0.0 },
8103+ {1 , 271.89336144893275 , 333.0 , 73926.0 , 0.0 },
8104+ {1 , 271.89336144893275 , 333.0 , 73926.0 , 0.0 },
8105+ {1 , 271.89336144893275 , 333.0 , 73926.0 , 0.0 },
8106+ },
8107+ },
8108+ },
8109+ },
78908110}
78918111
78928112var SpatialScriptTests = []ScriptTest {
0 commit comments