按列分组,并在另一列中获取最大字符串长度的行

ftf50wuq  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(226)

我在11年级有下表。 table1 :

id          col1    col2                        col3                        col4                        
NCT00000374 Drug    olanzapine                  olanzapine                  olanzapine                  
NCT00000390 Drug    imipramine hydrochloride    imipramine hydrochloride    imipramine hydrochloride    
NCT00000390 Drug    imipramine hydrochloride    imipramine hydrochloride    imipramine                  
NCT00000412 Drug    placebo calcitriol          placebo calcitriol          calcitriol

我想获取每行具有最大长度值的行 (id, col1, col2, col3) .
所需输出为:

id          col1    col2                        col3                        col4                        
NCT00000374 Drug    olanzapine                  olanzapine                  olanzapine                  
NCT00000390 Drug    imipramine hydrochloride    imipramine hydrochloride    imipramine hydrochloride    
NCT00000412 Drug    placebo calcitriol          placebo calcitriol          calcitriol

我尝试了以下查询,但到目前为止没有成功:

select * from table1
where length(col4) = max(length(col4))
group by id, col1, col2, col3
order by id
3xiyfsfu

3xiyfsfu1#

为…辩护 DISTINCT ON :

SELECT DISTINCT ON (id, col1, col2, col3)
       *
FROM   table1
ORDER  BY id, col1, col2, col3, length(col4) DESC NULLS LAST;

最简单,每行只有几行 (id, col1, col2, col3) 通常也是最快的。详细说明:
按组选择每组中的第一行?
对于大表和每组多行,有(更)快速的技术:
按查询优化分组以检索每个用户的最新行

相关问题