简体   繁体   English

来自多个子查询MYSQL的视图

[英]Views from Multiple Subqueries MYSQL

I have a mathematical code that requires two subqueries. 我有一个数学代码,需要两个子查询。 Below is the copy of the code. 下面是代码的副本。

SELECT AVGTEMP_X.Average_Temp, ProduceMonAvg.Avergae_CPI,
SUM(AVGTEMP_X.Average_Temp) as AVGTEMPSUM,
SUM(ProduceMonAvg.Average_CPI) as PROCPISUM,
SUM(AVGTEMP_X.Average_Temp*AVGTEMP_X.Average_Temp) AS AVGTEMPSQ,
SUM(ProduceMonAvg.Average_CPI*ProduceMonAvg.Average_CPI)PROCPISQ,
SUM(AVGTEMP_X.Average_Temp*ProduceMonAvg.Average_CPI) AS PowerSum,
COUNT(*) as COUNT,
(COUNT*(PowerSum)-(AVGTEMPSUM))/(sqrt(COUNT*(AVGTEMPSQ)-pow(AVGTEMPSUM,2)*
    (COUNT*(PROCPISQ)-pow(PROCPISUM,2)))) AS Correlation
FROM(SELECT series_id,FORMAT(AVG(value),2) AS Average_CPI, period
FROM CURRENT
WHERE series_id = 'CUSR0000SEFK'
AND theYear >=(1997)
AND theYear <=(2010)
GROUP BY period) AS ProduceMonAvg,
(SELECT Average_Temp
FROM AVGTEMP_X)
INNER JOIN ProduceMonAvg
ON AVGTEMP_X.period = ProduceMonAvg.period

I get an error saying 我说错了

1146 - Table 'xxx.ProduceMonAvg' doesn't exist 1146-表'xxx.ProduceMonAvg'不存在

1054 - Unknown column 'COUNT' in 'field list' 1054-“字段列表”中的未知列“ COUNT”

In your outer query, you reference ProdcueMonAvg.Average_CPI etc. In your inner query, you alias it as AS ProduceMonAvg . 在外部查询中,引用ProdcueMonAvg.Average_CPI等。在内部查询中,将其别名为AS ProduceMonAvg note the typo - Prodcue vs Produce . 注意错字ProdcueProduce Are you sure your error doesn't say Table xxx.ProdcueMonAvg doesn't exist ? 您确定您的错误没有说Table xxx.ProdcueMonAvg doesn't exist吗?

For that matter, there are a couple of other things that seem wrong with your query. 就此而言,您的查询还有其他几处问题。 Your join to the AVGTEMP_X query is using a subquery where one isn't necessary, it's also performing a cross join and THEN an inner join. 您对AVGTEMP_X查询的联接使用的是不需要子查询的子查询,它还在执行交叉联接,然后是内部联接。 I doubt that is what you wanted. 我怀疑那是你想要的。 Try this one out: 试试这个:

    SELECT AVGTEMP_X.Average_Temp,
    ProduceMonAvg.Average_CPI,
    SUM(AVGTEMP_X.Average_Temp) AS AVGTEMPSUM,
    SUM(ProduceMonAvg.Average_CPI) AS PROCPISUM,
     SUM(AVGTEMP_X.Average_Temp * AVGTEMP_X.Average_Temp) AS AVGTEMPSQ,
    SUM(ProduceMonAvg.Average_CPI * ProduceMonAvg.Average_CPI) PROCPISQ,
    SUM(AVGTEMP_X.Average_Temp * ProduceMonAvg.Average_CPI) AS PowerSum,
    COUNT(*) AS TOTAL,
     (COUNT(*) * (SUM(AVGTEMP_X.Average_Temp * ProduceMonAvg.Average_CPI)) - (SUM(AVGTEMP_X.Average_Temp))) / (sqrt(COUNT(*)* (SUM(AVGTEMP_X.Average_Temp * AVGTEMP_X.Average_Temp)) - pow(SUM(AVGTEMP_X.Average_Temp), 2) * (COUNT(*)* (SUM(ProduceMonAvg.Average_CPI * ProduceMonAvg.Average_CPI)) - pow(SUM(ProduceMonAvg.Average_CPI), 2)))) AS Correlation
FROM (
    SELECT series_id,
        FORMAT(AVG(value), 2) AS Average_CPI,
        period
    FROM CURRENT
    WHERE series_id = 'CUSR0000SEFK'
        AND theYear >= (1997)
        AND theYear <= (2010)
    GROUP BY period
    ) AS ProduceMonAvg
INNER JOIN AVGTEMP_X ON AVGTEMP_X.period = ProduceMonAvg.period

I've also created some mock tables and data and finally tested the query. 我还创建了一些模拟表和数据,并最终测试了查询。 It returns results. 它返回结果。 You can see it here: http://sqlfiddle.com/#!9/47523/14 您可以在这里看到它: http : //sqlfiddle.com/#!9/47523/14

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM