在同一查询中选择DISTINCT和MAX

时间:2013-03-18 20:19:50

标签: sql

我在以下结构中有一个包含行/数据的表

-----------
| SURVEY_ID |
------------
|  1       |
|  2       |
|  2       |
|  3       |
|  4       |
-----------

我想在同一查询中获取不同的ID和最大ID。我试过了

select distinct(survey_id) as survey_id , max(survey_id) as current 
from survey_main 
group by survey_id

这似乎没有返回正确的结果。我错过了什么?

编辑:必填结果

        ----------------------
        | Distinct|  Max     |
        ----------------------
        |  1       |  4      |
        |  2       |  4      |
        |  3       |  4      |
        |  4       |  4      |
        ----------------------

3 个答案:

答案 0 :(得分:3)

我认为 Itay Moav-Malimovka 的解决方案是完美的,但是如果你真的想要有两个列你可以使用....

select distinct(survey_id) as identifier, 
       (select max(survey_id) from survey) as "current" 
  from survey_main;

干杯!

答案 1 :(得分:2)

SELECT DISTINCT *
FROM T
ORDER BY SURVEY_ID DESC

第一个结果是MAX,整个数据集是不同的

答案 2 :(得分:1)

如果您在所有survey_ids的计数和一个查询中的最大值之后,请尝试:

select count(distinct survey_id) as number_of_survey_ids 
     , max(survey_id) as current 
from survey_main

如果您想将最大值添加到每行,您的数据库支持窗口函数,请尝试以下操作:

select survey_id 
     , max(survey_id) over () as current 
from survey_main