我用加入与存储在不同的表实际的国家,商品名称,以取代进口和出口数据的国家和产品ID。 在数据源表( 数据 ),有两列国家的ID,对始发地和目的地,这两个我用国名代替。
我想出的代码是指country_names表两次-作为country_names和country_names2, -这似乎并不很优雅。 我希望能参考下表只需一次,由一个单一的名字。 如果有人向我指出一个更优雅,也许更有效的方式来达到同样的结果,我将不胜感激。
SELECT
country_names.name AS origin,
country_names2.name AS dest,
product_names.name AS product,
SUM(data.export_val) AS export_val,
SUM(data.import_val) AS import_val
FROM
OEC.year_origin_destination_hs92_6 AS data
JOIN
OEC.products_hs_92 AS product_names
ON
data.hs92 = product_names.hs92
JOIN
OEC.country_names AS country_names
ON
data.origin = country_names.id_3char
JOIN
OEC.country_names AS country_names2
ON
data.dest = country_names2.id_3char
WHERE
data.year > 2012
AND data.export_val > 1E8
GROUP BY
origin,
dest,
product
产品编号转换为产品名称的表有6K +行。 这里是一个小例子:
id hs92 name
63215 3215 Ink
2130110 130110 Lac
21002 1002 Rye
2100200 100200 Rye
52706 2706 Tar
20902 902 Tea
42203 2203 Beer
42302 2302 Bran
178703 8703 Cars
下表对国家的ID转换为国名(这是我必须参加在桌子上两次)有264行对世界上所有的国家。 (id_3char是所使用的列。)下面是一个示例:
id id_3char name
euchi chi Channel Islands
askhm khm Cambodia
eublx blx Belgium-Luxembourg
eublr blr Belarus
eumne mne Montenegro
euhun hun Hungary
asmng mng Mongolia
nabhs bhs Bahamas
afsen sen Senegal
这里是从进出口数据表的数据,共205M行有两列起源和我正在参加关于DEST一个示例:
year origin dest hs92 export_val import_val
2009 can isr 300410 2152838.47 3199.24
1995 chn jpn 590190 275748.65 554154.24
2000 deu gmb 100610 1573508.44 1327.0
2008 deu jpn 540822 10000.0 202062.43
2010 deu ukr 950390 1626012.04 159423.38
2006 esp prt 080530 2470699.19 125291.33
2006 grc ind 844859 8667.0 3182.0
2000 ltu deu 630399 6018.12 5061.96
2005 usa zaf 290219 2126216.52 34561.61
1997 ven ecu 281122 155347.73 1010.0