我想按姓氏对我的表中的名字进行排序,并在两个不同的列中过滤出最短和最长的名字,有几个人的姓氏相同,如Max Bob,Mini Bob,霍华德Bob等。我只想要最短和最长的名字对应的姓氏
示例:
| 姓|最短名字|最长名字|
| --------------|--------------|--------------|
| 米奇|马克斯|罗纳德|
| 鸭子|鲍勃|霍华德|
| 鲍勃|马克斯|霍华德|
等等
到目前为止,我有:
SELECT
COUNT(last_name) as last name,
MIN(first_name) as shortest,
MAX(first_name) as longest
FROM
hr.employees
group by first_name;
它给出了last_name的计数,而不是last_name本身
| 姓|最短名字|最长名字|
| --------------|--------------|--------------|
| 1|马克斯|马克斯|
| 1|霍华德|霍华德|
| 2|马克斯|马克斯|
| 2|霍华德|霍华德|
但我不知道该怎么办有什么建议吗
1条答案
按热度按时间zhte4eai1#
在Oracle中,我们可以在这里使用
keep
语法:如果存在最短或最长名字的关系,则查询按字符串方式选择“最小”值。
下面是一个demo:
fiddle