Nim*_*rux 3 sql oracle group-by filter
我正试图
select columns Age, Height, House_number, Street
from my_table
where count(combination of House_number, Street)
occurs more than once.
Run Code Online (Sandbox Code Playgroud)
我的桌子看起来像这样
Age, Height, House_number, Street
15 178 6 Mc Gill Crst
85 166 6 Mc Gill Crst
85 166 195 Mc Gill Crst
18 151 99 Moon Street
52 189 14a Grimm Lane
Run Code Online (Sandbox Code Playgroud)
我期望的结果看起来像这样
Age, Height, House_number, Street
15 178 6 Mc Gill Crst
85 166 6 Mc Gill Crst
Run Code Online (Sandbox Code Playgroud)
卡住!
最好的方法是使用窗口函数,假设您的数据库支持它们:
select columns Age, Height, House_number, Street
from (select t.*, count(*) over (partition by house_number, street) as cnt
from my_table t
) t
where cnt > 1
Run Code Online (Sandbox Code Playgroud)
这是在Oracle中使用Windows函数(也称为分析函数).表达式count(*) over (partition by house_number, street)是计算每个house_number和街道组合的行数.它有点像做a group by,但它会将计数添加到每一行,而不是将多行合并为一行.
完成后,只需选择值大于1的行即可.
| 归档时间: |
|
| 查看次数: |
856 次 |
| 最近记录: |