【问题标题】:Correlation via primary key column通过主键列关联
【发布时间】:2012-11-23 14:31:53
【问题描述】:

我有两个表,其中的数据行不相等,我需要通过“第 3 方”列关联这些表。此第 3 方列是两个表的 DATETIME 主键。

这是表格

|XKey       |XColumn            |
|-------------------------------|
|2012-01-00 |0.17
|2012-02-00 |0.24
|2012-03-00 |0.33
|2012-04-00 |0.41
|--------------------------------




Y TABLE
=======

|YKey       |YColumn            |
|-------------------------------|
|2012-01-01 |0.21
|2012-01-15 |0.12
|2012-02-01 |0.26
|2012-02-15 |0.27
|2012-03-01 |0.14
|2012-03-15 |0.11
|2012-04-01 |0.74
|2012-04-15 |0.66
|2012-05-01 |0.14
|--------------------------------

y表中的值应该与x表中对应的xkey值小于或等于相应ykey值的值相关。

这个准备好的语句只是产生空值!我可以忽略什么?

SET @sql_run =  CONCAT(
        'SET @correl = (SELECT (1/(?-1))*SUM(((a.'
        ,XColumn
        ,' - ?)/?)*((b.'
        ,YColumn
        ,' - ?)/?)) FROM '
        ,XTable
        ,' a JOIN '
        ,YTable
        ,' b ON a.'
        ,XKey
        ,' <= b.'
        ,YKey
        ,' GROUP BY a.'
        ,XKey
        ,', b.'
        ,YKey
        ,' HAVING COUNT(a.'
        ,XKey
        ,') < 2 ORDER BY a.'
        ,XKey
        ,', b.'
        ,YKey
        ,')'
        );      
PREPARE statement_run FROM @sql_run ;
EXECUTE statement_run USING @num, @x_avg, @x_std, @y_avg, @y_std ;
DEALLOCATE PREPARE statement_run ;

调整 xtable 中的日期值后,现在出现错误“子查询返回多行”

【问题讨论】:

  • 传递了哪些输入变量? - 你能展示一个完整的带有变量的sql语句吗?
  • 这些是在行数、平均值和标准差之前设置的输入变量......现在得到的错误是子查询返回多个值
  • @num, @x_avg, @x_std, @y_avg, @y_std

标签: mysql


【解决方案1】:

您的 XKey 日期值无效。尝试将它们设置为每月的第一天而不是 0。

【讨论】:

  • 我刚尝试添加一个日期值,现在收到错误,子查询返回多行
  • 首先使用已知值运行查询(IE 不在准备好的语句中)。您使用的格式(对我来说)很难阅读。您似乎正在尝试将多行分配给一个 @variable (@correl)。
  • 终于让它工作了` SET @sql_run = CONCAT( 'SET @correl = (SELECT (1/(?-1))*SUM(((c.x1 - ?)/?) *((c.y1 - ?)/?)) FROM (SELECT b.' ,YKey ,', a.' ,XColumn ,' AS x1, b.' ,YColumn ,' AS y1 FROM ' ,XTable ,' a JOIN ' ,YTable ,' b ON a.' ,XKey ,' >= b.' ,YKey ,' GROUP BY b.' ,YKey ,') AS c)' );`
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
  • 2013-07-03
  • 2012-10-06
相关资源
最近更新 更多