gpt4 book ai didi

mysql - Hive 查询给出与 SQL 不同的结果

转载 作者:可可西里 更新时间:2023-11-01 16:03:20 27 4
gpt4 key购买 nike

我在 MySQL 数据库中有两个表,分别称为“游戏”和“团队”。它们具有以下形式:

game:
+-----+------+
| gid | temp |
+-----+------+
| 1 | 79 |
| 2 | 78 |
| 3 | 109 |
| 4 | 77 |
| 5 | 90 |
| 6 | 89 |
| 7 | 65 |
| 8 | 71 |
| 9 | 89 |
| 10 | 80 |
+-----+------+

team:
+-----+-------+-----+-----+
| gid | tname | ry | py |
+-----+-------+-----+-----+
| 1 | SF | 92 | 247 |
| 1 | ATL | 95 | 264 |
| 2 | JAC | 119 | 279 |
| 2 | CLE | 96 | 153 |
| 3 | PHI | 306 | 119 |
| 3 | DAL | 67 | 100 |
| 4 | NYJ | 118 | 261 |
| 4 | GB | 62 | 149 |
| 5 | IND | 119 | 267 |
| 5 | KC | 74 | 206 |
+-----+-------+-----+-----+

还有更多的专栏,但这些是相关的。我已经使用 Sqoop 将它们导出到 Hive(我以伪分布式模式运行),并且我正在尝试运行一个简单的查询;但是,与在 MySQL 中运行相同的查询相比,我得到的结果大不相同。

例如,如果我在 Hive 中运行查询(以获取在低于冰点的温度下每场比赛的平均码数)

SELECT tname, AVG(ry+py) as ypg FROM team INNER JOIN 
(SELECT gid FROM game WHERE temp<=32) AS cold
ON team.gid=cold.gid GROUP BY tname;

我明白了

OK
ARI 263.0
ATL 271.5
BAL 309.77777777777777
BUF 304.5
CAR 278.6666666666667
CHI 292.6333333333333
CIN 309.77272727272725
CLE 290.6666666666667
DAL 255.85714285714286
DEN 366.5
DET 327.44444444444446
GB 373.75471698113205
HOU 391.75
IND 303.9
JAC 302.0
KC 346.4782608695652
MIA 325.1666666666667
MIN 325.6666666666667
NE 358.5
NO 369.3333333333333
NYG 347.57142857142856
NYJ 310.27777777777777
OAK 326.7
PHI 344.3
PIT 359.969696969697
SD 337.14285714285717
SEA 289.45454545454544
SF 340.14285714285717
STL 452.0
TB 348.3333333333333
TEN 305.3076923076923
WAS 290.3333333333333
Time taken: 30.172 seconds, Fetched: 32 row(s)

然而,在 MySQL 中运行相同的查询会得到

+-------+----------+
| tname | ypg |
+-------+----------+
| ARI | 339.7283 |
| ATL | 347.1628 |
| BAL | 304.5625 |
| BUF | 305.1250 |
| CAR | 333.7179 |
| CHI | 313.3462 |
| CIN | 316.9167 |
| CLE | 301.1579 |
| DAL | 356.4805 |
| DEN | 357.8298 |
| DET | 366.3509 |
| GB | 372.9351 |
| HOU | 334.9915 |
| IND | 362.3732 |
| JAC | 325.9444 |
| KC | 339.1622 |
| MIA | 318.6667 |
| MIN | 341.0000 |
| NE | 368.5614 |
| NO | 408.4219 |
| NYG | 370.2500 |
| NYJ | 314.8788 |
| OAK | 327.7143 |
| PHI | 354.2619 |
| PIT | 359.4565 |
| SD | 352.2105 |
| SEA | 349.8444 |
| SF | 320.9744 |
| STL | 348.1736 |
| TB | 309.9310 |
| TEN | 314.4222 |
| WAS | 362.3548 |
+-------+----------+
32 rows in set (0.00 sec)

为什么这些不同?

最佳答案

事实证明,Hive 查询返回了正确的结果。这是因为“游戏”表中缺少一些温度,MySQL 将其视为 0(因此在低于冰点的温度下计算每场比赛的码数)。

关于mysql - Hive 查询给出与 SQL 不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37599470/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com