【问题标题】:HIVE - Getting ALL columns of the table with COUNT(*) with DISTINCT valuesHIVE - 使用具有 DISTINCT 值的 COUNT(*) 获取表的所有列
【发布时间】:2020-11-06 22:02:21
【问题描述】:

我有一个名为 Current_Table 的下表

我想得到的输出是,

  1. 列personalemailtrim 为DISTINCT
  2. 列 Occurrences 必须超过 Count >1
  3. 按列personalemailtrim 排序

到目前为止,我的查询在许多级别上都是错误的,不能使用 DISTINCT 进行分组,并且使用 Count(*) 并没有给我的 Group my etc 带来任何结果......

SELECT id,
       personalemailtrim,
       personworksatnumberofbsbs,
       region,
       district,
       branch,
       num,
       countofapptsatbsb,
       COUNT(personalemailtrim) occurrences
  FROM Current_table
 GROUP BY id,
          personalemailtrim,
          personworksatnumberofbsbs,
          region,
          district,
          branch,
          num,
          countofapptsatbsb
HAVING COUNT(*) > 1
 ORDER BY personalemailtrim

非常感谢您提供的任何帮助。我尝试了几种分解代码方法,但我被困在了这个

进一步阐述,预期的输出应如下所示

如你所见,

  1. 出现次数 > 1
  2. personalemailtrim 现在是 DISTINCT

【问题讨论】:

  • 不清楚你的意思……
  • 当然,在问题中添加了更多详细信息

标签: sql group-by hive count distinct


【解决方案1】:

我想你想要:

select t.*
from (select t.*,
             row_number() over (partition by personalemailtrim order by id) as seqnum
      from Current_table t
     ) t
where seqnum = 1 and occurrences > 1;

这假设每个 personalemailtrim 的出现次数相同,这与您的数据和您的问题一致。

【讨论】:

  • 谢谢 Gordon,我刚刚运行了查询并没有得到任何结果,事实上结果是 = 0。这也是我在运行代码时遇到的错误
  • @YJG 。 . .鉴于您问题中的代码,这肯定会返回第 100 行和第 102 行。如果您想为您的代码设置一个 dbfiddle,我可以演示一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-13
  • 1970-01-01
  • 2015-10-18
  • 1970-01-01
相关资源
最近更新 更多