Hive 配置单元分解/侧视图表

Hive 配置单元分解/侧视图表,hive,hiveql,Hive,Hiveql,表:jd1(Comaparison表) 表:数据1(新值表) 我已经在sql server中编写了此查询,它正在工作,但在配置单元中显示了一个错误 select * from data1; 1 siva hadoop 1 siva hive 1 siva spark 1 siva hbase 1 siva mapreduce 1 siva hdfs 2 kumar hadoop 2 kumar hive 2 kum

表:jd1(Comaparison表)

表:数据1(新值表)

我已经在sql server中编写了此查询,它正在工作,但在配置单元中显示了一个错误

select * from data1;

1   siva    hadoop
1   siva    hive
1   siva    spark
1   siva    hbase
1   siva    mapreduce
1   siva    hdfs
2   kumar   hadoop
2   kumar   hive
2   kumar   python
2   kumar   spark
3   naveen  hive
3   naveen  hadoop
3   naveen  flume
3   naveen  kafka
从jd1中选择*

1   hadoop
1   hive
1   spark
1   hbase
1   mapreduce
1   hdfs
1   python
1   java  
预期产量

1   siva    6   85.71428571428571
2   kumar   4   57.142857142857146
3   naveen  2   28.571428571428573
我的问题

select id, name, count(*), ((count(*)*100)/(select count(skills)from jd1))avg
from (select n.id, n.name, n.skills
      from data1 n join jd1 t on (n.skills=t.skills))a
group by id,name;
错误

FAILED: ParseException line 1:44 cannot recognize input near 'select' 'count' '(' in expression specification

您可以尝试以下查询-

SELECT n.id, n.name, COUNT(n.skills), COUNT(n.skills)/skill_cnt.total_skill
FROM data1 n
JOIN jd1 t ON n.skills=t.skills
CROSS JOIN (SELECT COUNT(*) total_skill FROM jd1) skill_cnt
GROUP BY n.id, n.name, total_skill

为jd skill再创建一个表作为skill_计数并加入此表

SELECT n.Id, n.Job_Id, n.Name, n.Email, n.Mobile_Number, n.Education, n.Total_Experiance,((count(n.skills)*100)/s.skill_count) Average
FROM new_resume n
JOIN new_jd t ON n.skills=t.skills
JOIN skill_count s ON n.job_id = s.job_id
GROUP BY n.Id, n.Job_Id, n.Name, n.Email, n.Mobile_Number, n.Education, n.Total_Experiance,s.skill_count;

它显示此错误失败:SemanticException[error 10025]:第3:32行表达式不在组中,按键'TOTAL_SKILLS'@Siva,立即重试。@Ankit Bajpai.FAILED:SemanticException[error 10004]:第6:23行无效的表别名或列引用'TOTAL_SKILLS':(可能的列名为:n.id,n.name,n.SKILLS,t.id,t.SKILLS)@Ankit Bajpai。失败:ParseException第1:42行无法识别表达式规范中“SELECT”“COUNT”(“选择”计数)附近的输入。现在可以尝试一下吗?
SELECT n.Id, n.Job_Id, n.Name, n.Email, n.Mobile_Number, n.Education, n.Total_Experiance,((count(n.skills)*100)/s.skill_count) Average
FROM new_resume n
JOIN new_jd t ON n.skills=t.skills
JOIN skill_count s ON n.job_id = s.job_id
GROUP BY n.Id, n.Job_Id, n.Name, n.Email, n.Mobile_Number, n.Education, n.Total_Experiance,s.skill_count;