mysql - 在 HIVE 连接查询中获取具有意外值的重复行

标签 mysql sql-server hadoop hive

当我在配置单元中运行以下查询时,我得到了带有错误值的重复行,这些值在两个表中都没有出现,

SELECT year_1992.id, year_1992.total, year_1993.total

FROM year_1992 INNER JOIN year_1993 ON (year_1992.id = year_1993.id)

order by year_1992.id;

这里我有两个表,都包含id和total列,其中id值相同,我想显示id,table_1992的总计和table_1993的总计。

以下是上述查询的结果,

451211  8327    9108

452111  87384   88720

452111  85153   88720(here 85153-wrong value)

452111  87384   86325(here 86325-wrong value)

452111  85153   86325(here 85153, 86325-wrong valuee)

452112  93871   103405

452112  91936   103405

452112  93871   101360

452112  91936   101360

我什至尝试过不同的结果,但结果仍然相同。

最佳答案

Id 字段中有重复的值。这就是行重复的原因。您需要添加聚合函数和 group by 子句或更改连接两个表的方式 这将删除所有重复项,但会汇总所有总数。或者您可以显示 MAX、MIN、AVG 等...

SELECT year_1992.id, 
SUM(year_1992.total) AS 'year_1992.sum', 
SUM(year_1993.total) AS 'year_1993.sum',

MAX(year_1992.total) AS 'year_1992.MAX', 
MAX(year_1993.total) AS 'year_1993.MAX'

MAX(year_1992.total) AS 'year_1992.MIN', 
MAX(year_1993.total) AS 'year_1993.MIN',

MAX(year_1992.total) AS 'year_1992.AVG', 
MAX(year_1993.total) AS 'year_1993.AVG'

FROM year_1992 
    INNER JOIN year_1993 ON (year_1992.id = year_1993.id)
GROUP BY year_1992.id
ORDER BY year_1992.id;

此外,由于内部联接,有可能不会返回所有行,而只会返回两个表中 id 匹配的行。

希望有帮助

关于mysql - 在 HIVE 连接查询中获取具有意外值的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27880800/

相关文章:

c# - 将浮点型转换为字符串

mysql - 如何将mssql脚本转换为mysql

hadoop - 试图让 Hadoop 在伪分布式模式下工作 : connection refused and other errors

hadoop - Hbase中的单行超过hbase.hregion.max.filesize时的性能问题

mysql - 链接 4 个 SQL 表有困难

javascript - 来自 MySQL while 循环的 JavaScript 和 HTML 标记中的变量

mysql - 显示mysql中2倍的数据

php - PDO dblib nextRowset 不工作

php - Cookie 与 MySQL 保存

Hadoop 似乎在对给定 reduce 调用的值进行迭代期间修改了我的关键对象