sql - Hive 初学者,失败:SemanticException 错误
问题描述
假设我有两个表,actv_user 和 play_video:
活动用户:
|p_date | user_id|country_name|
| -------- | -------------- |------------|
| 20210125| 1|Brazil|
| 20210124| 2|ENG|
| 20210125| 3|India|
| 20210125| 4|Indonesia|
| 20210125| 5|Indonesia|
| 20210125| 6|Brazil|
| 20210125| 7|Brazil|
| 20210125| 8|Indonesia|
User_id is unique but country_name can be null
play_video:
| user_id| video_id|
| -------- | -------------- |
| 1| 1001|
| 1| 1002|
| 2| 2001|
| 3| 1001|
| 3| 1002|
| 3| 3003|
| 4| 4004|
|5| 1001|
|5| 5005|
|6| 1001|
|6| 1002|
|7| 1001|
|7| 1002|
|8| 3003|
|8| 4004|
我想做的是在第一天找到巴西、印度尼西亚和印度的新用户(p_date = 20210125)在顶部播放视频。因此,巴西的新用户为1,6,7(user_id),印度的新用户为3,印度尼西亚的新用户为4,5,8(user_id);结果是这样的: 在巴西,新用户播放量最高的视频是 1001,1002 在印度,新用户播放量最高的视频是 1001,1002,3003 在印度尼西亚,新用户播放量最高的视频是 4004,3003,5005
渴望结果:
|country_name| count|video_id|
| -------- | -------------- |----- |
| Brazil| 1001|3|
| Brazil| 1002|3|
| India | 1001|1|
| India | 1002|1|
| India | 3003|1|
| Indonesia | 4004|2|
| Indonesia | 3003|1|
| Indonesia | 5005|1|
我得到的错误信息是:失败:语义异常错误条件:user_ID 不为空。SQL_Photo 分区限制中缺少Table play!如有分区情况,请检查是否有异常或使用情况,或情况请加括号!
有任何想法吗?
我试过了:
select actv_user.country_name ,play_video.video_id, count(play_video.video_id) count_num
from actv_user join play_photo on actv_user.user_id = play_video.user_id
where p_date = 20210125 and (country_name = 'Brazil' or country_name = 'India ' or country_name = 'Indonesia ')
group by actv_user.country_name ;
解决方案
请在 ('Brazil' ,'India ' ,'Indonesia ') 中试试这个 country_name
推荐阅读
- ios - UISlider alpha 停留在 0.5
- python - 如何在我的 Jupyter 中打开带有 .ipybn 链接的网络浏览器?
- javascript - 是否可以通过变量设置属性的背景?
- ravendb - 我可以优化 Ravendb 以创建索引吗
- c# - 平滑的摄像机旋转到玩家面对的方向
- sql - 比较 SQL Server 中的两个日期列
- azure - Azure API 没有授权
- javascript - 为什么 Javascript 可折叠在 IE 中不起作用?
- python-3.x - NSSM Python 服务因模块错误而暂停
- angular - 模块内的路由器出口不适用于 ngForm