Hive 如何从多个列中查找值计数

Hive 如何从多个列中查找值计数,hive,Hive,有人能帮我从下面的样本数据中提取性别计数吗 O/p可以是: 18岁 F 11 或 M F 18 11谢谢。成功了。如果我想找到'M'和'F'值的平均值,语法应该是什么?O/P应该是m67%f32%@Chethan总数(100%)是行数*列数=30。总数=计数(*)*5,对吗?那么m_pct=m_cnt*100/总;m_cnt=18。18*100/30=60%谢谢你的语法,瓦莱里。当有N行时,该怎么办。是否有一种方法可以找到平均值,而不必在单个命令中使用行数*列数,就像上面的方法一样。消除空值!

有人能帮我从下面的样本数据中提取性别计数吗

O/p可以是:

18岁 F 11

M F
18 11

谢谢。成功了。如果我想找到'M'和'F'值的平均值,语法应该是什么?O/P应该是m67%f32%@Chethan总数(100%)是行数*列数=30。总数=
计数(*)*5,对吗?那么m_pct=m_cnt*100/总;m_cnt=18。18*100/30=60%谢谢你的语法,瓦莱里。当有N行时,该怎么办。是否有一种方法可以找到平均值,而不必在单个命令中使用行数*列数,就像上面的方法一样。消除空值!但仅从所需列中选择所有“F”和“M”值?@Chethan无论如何都应该提前知道colunn的数量,这不是动态的。如果要查找NOTNULL的总计数:count(col1)+count(col2)…+count(col6)=total,并在答案中计算M和F值的总和。只需在上面的子查询中使用表达式将它们组合起来进行百分比计算。行数无关紧要。我相信你在问N列,对吧?查询中应提供列。是的,这是一个SQL语句,当然我仍然无法找到平均值。我的想法不对。
select 'M',
       sum(case when col1='M' then 1 end)+
       sum(case when col2='M' then 1 end)+
       sum(case when col3='M' then 1 end)+
       sum(case when col4='M' then 1 end)+
       sum(case when col5='M' then 1 end) as m_cnt,
       'F',
       sum(case when col1='F' then 1 end)+
       sum(case when col2='F' then 1 end)+
       sum(case when col3='F' then 1 end)+
       sum(case when col4='F' then 1 end)+
       sum(case when col5='F' then 1 end) as f_cnt
  from your_table;