我使用HIVE进行查询,我喜欢查询所有列并基于不同的特定一列。
例如我有表a;
StudentID
StudentName,
StudentBirsthDay,
StudentPassport;
StudentAge;
StudentRegisted;
....
....
我希望查询所有具有唯一StudentID的学生
从a中选择*,distinct(StudentID);
我应该如何编写查询?
非常感谢
答案 0 :(得分:3)
为什么会StudentId
重复?这听起来像是你申请中的一个问题。
获取唯一的StudentId
s:
select StudentId
from t
group by StudentId
having count(*) = 1;
您可以通过不同方式获取所有列,但在所有数据库中使用的一种方法是join
:
select t.*
from t join
(select StudentId
from t
group by StudentId
having count(*) = 1
) tt
on t.StudentId = tt.StudentId;
编辑:
在Hive中,您将使用窗口函数:
select t.*
from (select t.*, count(*) over (partition by StudentId) as cnt
from t
) t
where cnt = 1;
注意:如果您想要所有StudentId
的一行行,那么您可以使用row_number()
代替count(*)
。
答案 1 :(得分:0)
查询写如:
SELECT DISTINCT column1, column2, ...
FROM table_name;
示例:强>
SELECT DISTINCT StudentID FROM a;