求助~SELECT语句,查询学时数最多的课程名称和学时数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助~SELECT语句,查询学时数最多的课程名称和学时数相关的知识,希望对你有一定的参考价值。

表为这样

要求为这样

select 课程名称,学时

  from 表

where 表.学时 =(

          select max(学时)

             from 表);

新创建一个表aa,查询结果如图:

参考技术A 你试试看行不行,假如表名是EMP
select a.课程名称,b.m_hour 学时
from
(select max(学时) m_hour from emp) b,
emp a where b.m_hour=a.学时;

Hive学习之Union和子查询

Union的语法格式如下:

select_statement UNION ALL select_statement UNION ALL select_statement ... 

Union用于将多个SELECT语句的查询结果合并到一个结果集中,目前Hive只支持UNION ALL,也就是结果集中的重复记录不会被删除。SELECT语句返回列的数目和名称必须相同,否则会报schema错误。Union语句还可以嵌套在FROM子句中:

SELECT *  
FROM (  
  select_statement  
  UNION ALL  
  select_statement  
) unionResult  

    在Hive-0.12.0及之前的版本中,Union只能在子查询中使用,在Hive-0.13.0版本中,去除了该限制,Union查询可以作为独立的查询使用

    看过了Union后,现在来看看子查询。在Hive-0.12.0及之前的版本中子查询只能出现在FROM子句中,且必须给定一个名称,因为每个在FROM子句中的表必须拥有名称。子查询中的列必须有唯一的名称,子查询中的列在外部查询中可以像表中的列那样使用,子查询也可以是Union查询,Hive支持任意层的子查询。具体语法如下:

SELECT ... FROM (subquery) name ...  
SELECT ... FROM (subquery) AS name ... //AS关键字是在Hive-0.13.0中引入的  

下面是包含Union all子查询的例子:

SELECT t3.col  
FROM (  
  SELECT a+b AS col  
  FROM t1  
  UNION ALL  
  SELECT c+d AS col  
  FROM t2  
) t3 

从Hive-0.13.0开始,某些类型的子查询可以出现在WHERE子句中,这些子查询的结果可以被IN、NOT IN、EXISTS和NOT EXISTS语句当做常量,也称为不相关查询,因为子查询不引用父查询的列。下面是两个例子:

SELECT *  
FROM A  
WHERE A.a IN (SELECT foo FROM B);   
  
SELECT A  
FROM T1  
WHERE EXISTS (SELECT B FROM T2 WHERE T1.X = T2.Y)  

 子查询的一些限制总结如下:

  • 子查询只能出现在表达式的右侧
  • IN/NOT IN的子查询中只允许选择一列
  • EXISTS/NOT EXISTS必须有一个或者多个相关谓词
  •  对父查询的引用只能出现在子查询的WHERE子句中

转自:http://blog.csdn.net/skywalker_only/article/details/39294183

 

以上是关于求助~SELECT语句,查询学时数最多的课程名称和学时数的主要内容,如果未能解决你的问题,请参考以下文章

求助sql语句,多个join嵌套

关于学生,课程,选课三张表的sql查询

Hive学习之Union和子查询

求助:SQLSERVER多条查询语句合并

oracle sql 基础:select 语句

如何在子查询中使用 select 语句? (Postgres)