SQL窗口函数,用于获取存在多个唯一姓氏的地址(Snowflake)



我有一个Snowflake表,其中包括地址、状态、名字和姓氏。我想得到一个查询,只显示不止一个姓氏不同的人的地址。

例如,假设我有

address     | fname | lname    |State
10 lake road| John  | Smith    |FL
10 lake road| Julie | Gallagher|FL
3 gator cove| Jack  | Hoyt     |FL
3 gator cove| Debra | Hoyt     |FL

我希望查询只返回该示例中的1行:10 lake road。因为这是唯一一个有超过1个唯一姓氏的房子。

我目前正在使用

SELECT  distinct a.address, a.fname, a.lname, a.state
FROM clients_addresses a
WHERE a.state = 'FL'
qualify count(1) over( partition by a.lname) > 1 
order by a.address

然而,这只是返回一个人以上的地址,不在乎姓氏是否重复。这就是我试图避免的。

我不太明白查询哪里出了问题。Snowflake不喜欢在初始选择后使用任何不同的关键字,即使我使用它,它也只返回每个地址的1次出现,但它仍然只是一个人以上的地址,即使地址中只有一个姓氏。

它不需要涉及关键字"qualified",我知道Snowflake也接受其他东西,比如可能有助于解决这个问题的子选项。

我希望查询在该示例中只返回1行:10 lake road。

这听起来像是聚合:

SELECT a.address, count(*)
FROM clients_addresses a
WHERE a.state = 'FL'
GROUP BY a.address
HAVING COUNT(DISTINCT a.lname) > 1;

如果你想要原始行(这不是你的问题所要求的(,你可以使用:

SELECT a.*
FROM clients_addresses a
WHERE a.state = 'FL'
QUALITY COUNT(DISTINCT a.lname) OVER (PARTITION BY a.address) > 1;

最新更新