当前位置: 首页 > 面试题库 >

如何在SQL Server中选择顺序重复项

鞠乐
2023-03-14
问题内容

我想从SQL Server表中选择重复的条目, 但前提是id是连续的。

上面的答案是针对Oracle的,但是我看到SQL Server也具有leadlag功能。

另外,我认为上面的答案在*重复项的旁边,但我只想选择重复项。

select 
    id, companyName, 
    case 
       when companyName in (prev, next) 
          then '*' 
    end match, 
    prev, 
    next 
from 
    (select
         id,
         companyName,
         lag(companyName, 1) over (order by id) prev,
         lead(companyName, 1) over (order by id) next
     from
         companies)
order by
    id;

范例

因此,根据此数据集:

id      companyName
-------------------    
1       dogs ltd
2       cats ltd
3       pigs ltd
4       pigs ltd
5       cats ltd
6       cats ltd
7       dogs ltd
8       pigs ltd

我要选择:

id      companyName
-------------------    
3       pigs ltd
4       pigs ltd
5       cats ltd
6       cats ltd

更新

我时不时地对我得到的答案的数量和质量感到惊讶。这是那些时代之一。我没有判断一个答案比另一个答案更好的专业知识,所以我选择了SqlZim,因为这是我看到的第一个可行答案。但是很高兴看到不同的方法。尤其是仅在一个小时前,我想知道“这是否可能?”。


问题答案:

这是一个间隙和孤岛样式的问题,但是我们没有使用两个row_numbers(),而是在最里面的子查询中使用idrow_number()。接下来count() over()获取每条计数grp,最后返回带有的计数cnt > 1

select id, companyname 
from (
  select 
      id
    , companyName
    , grp
    , cnt = count(*) over (partition by companyname, grp)
  from (
    select *
      , grp = id - row_number() over (partition by companyname order by id)
    from
      companies
    ) islands
  ) d
where cnt  > 1
order by id

extrester演示:http://rextester.com/ACP73683

返回:

+----+-------------+
| id | companyname |
+----+-------------+
|  3 | pigs ltd    |
|  4 | pigs ltd    |
|  5 | cats ltd    |
|  6 | cats ltd    |
+----+-------------+


 类似资料:
  • 我想调用一个函数时,选择的任何选项。类似于这样: 但不知何故不起作用。有人能帮忙吗。 请注意 我不想捕获更改事件,如果我选择已经选择选项,则不会触发更改事件

  • 如果数据库中的数据为是或否,如何选中复选框,我尝试使用attr函数,但没有成功 这是我的html

  • 例如,我的列表包含{4,6,6,7,7,8},我想要最终结果= {6,6,7,7} 一种方法是遍历列表并消除唯一值(本例中为4,8)。 除了在列表中循环之外,还有其他有效的方法吗?我问这个问题是因为我正在工作的列表非常大?我的密码是

  • 我需要选择满足以下条件的行: 如果(X为真,Z为假)(X为假,Z为真),则将True作为值赋给新列。 我试过这个: 但是我得到了以下错误: ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。 我尝试使用任何(),如下所示

  • 本文向大家介绍pandas 选择重复,包括了pandas 选择重复的使用技巧和注意事项,需要的朋友参考一下 示例 如果需要将值设置0为column B,则在columnA中的重复数据中,首先使用创建掩码Series.duplicated,然后使用DataFrame.ix或Series.mask: 如果需要反面罩使用~:            

  • 我试图将值绑定到下拉列表,我的数据是一个对象数组,但找不到一种方法将所选内容的id绑定到下拉列表值。 这是我的密码和小提琴 html http://jsfiddle.net/7RUzu/1/ 我希望id是值。 谢啦