sql - HIVE 获取选择任何课程的男性和女性人数
问题描述
我有两张桌子,学生和培训。学生和培训表如下。
Student
ID name age sex salary
1213 lavanya 18 Female 8000
1208 reshma 19 Female 14000
1207 bhavya 20 Female 15000
1212 Arshad 28 Male 20000
1209 kranthi 22 Male 22000
1210 Satish 24 Male 25000
1211 Krishna 25 Male 26000
1203 khaleel 34 Male 30000
1204 prasant 30 Male 31000
1206 laxmi 25 Female 35000
1205 kiran 20 Male 40000
1201 gopal 45 Male 50000
1202 manisha 40 Female 51000
Training
1 1201 csharp
2 1205 c
3 1201 c
4 1202 java
5 1205 java
6 1203 shell
7 1204 hadoop
8 1201 hadoop
现在我想计算参加过任何课程的男性和女性。我尝试了以下查询-
hive> select s.sex, count(*) from student join training t on s.id=t.sid group by s.sex;
但是这个查询给出的输出是女性 2 男性 4 虽然预期结果应该是女性 1 男性 2 请注意这是一个样本和正在使用的数据的简短形式。
解决方案
在这里,我编写了一个获取您数据的代码:-
SELECT
final.ct_sex as sex,count(*) as num
FROM
(SELECT tb.sex as ct_sex FROM newschema.mytable AS tb JOIN (SELECT tr.ID,GROUP_CONCAT(tr.skill) as skills FROM newschema.train AS tr GROUP BY tr.ID) AS tp ON tb.ID = tp.ID) as final
group by
final.ct_sex
推荐阅读
- c# - UWP 应用程序编译得到验证错误。清单中的 C00CE014
- java - 使用正则表达式 android 匹配/包含的字符串
- laravel - Laravel 5.7 Vue.js 2 在 Edge 和 IE 11 中不起作用
- asp.net - TYPO3 外部认证
- c++ - CMake 错误:变量未找到。ACE_INCLUDE_DIR(高级)
- android - 在android的系统活动呼叫中嵌入自定义语音和用户语音
- python - 我需要在正则表达式搜索之前包含“r”吗?
- rxjs - 基于谓词的 rxjs 缓冲区
- sql-server-2012 - exec master..xp_cmdshell bcp create file 仅适用于 C:\ 驱动器
- scala - 如何配置 logback 以获得好的 akka-http logRequest 事件日志