内部加入ON语句

时间:2016-02-28 16:59:31

标签: mysql sql join

我正在完成一项任务:

  

比较平均每日收入(正如我在Teradata第5周所定义的那样)   具有最高msa_income和商店的商店的练习指南)   具有最低中位数msa_income(根据msa_income字段)。   在这两个商店的哪个城市和州,以及哪个商店有一个   平均每日收入较高?

...答案键在ON语句中有一个内部联接,这让我很困惑。我刚刚学会了加入FROM。所以我在网上搜索了ON语句中的内部联接,没有太多关于它的内容。

我是一名新学员,所以这个问题可能非常基础。提前感谢您的耐心等待!

我遇到问题的第一行是:ON m.store=t.store JOIN strinfo s

SELECT SUM(store_rev. tot_sales)
    SUM(store_rev.numdays) AS daily_average, 
    store_rev.msa_income as med_income,     
    store_rev.city, store_rev.state
    FROM (SELECT COUNT (DISTINCT t.saledate) as numdays, 
    EXTRACT(YEAR from t.saledate) as s_year, 
    EXTRACT(MONTH from t.saledate) as s_month, t.store, 
    sum(t.amt) as tot_sales, 
    CASE 
       when extract(year from t.saledate) = 2005 AND extract(month from t.saledate) = 8 then 'exclude'
END as exclude_flag, m.msa_income, s.city, s.state
FROM trnsact t JOIN store_msa m
ON m.store=t.store JOIN strinfo s
ON t.store=s.store
WHERE t.stype = 'P' AND exclude_flag IS NULL
GROUP BY s_year, s_month, t.store, m.msa_income, s.city, s.state
HAVING numdays >= 20) as store_rev
WHERE store_rev.msa_income IN ((SELECT MAX(msa_income) 
FROM store_msa),(SELECT MIN(msa_income) FROM store_msa))
GROUP BY med_income, store_rev.city, store_rev.state;

1 个答案:

答案 0 :(得分:0)

如果这样写的话,也许会更容易理解:

FROM trnsact t JOIN
     store_msa m
     ON m.store = t.store JOIN
     strinfo s
     ON t.store = s.store

JOIN {/ 1}}语句中的ON不是FROM子句由多个连接组成,链接在一起。

您可以将JOIN关键字视为结束ON子句并开始新的连接条件。