如何根据圆柱雪花中的重复值从表中选择行

发布于 2025-02-14 02:07:01 字数 967 浏览 1 评论 0原文

我有一张桌子A,看起来类似于:

IDPETCountry
45DogUS
72CA
15CATCA
36CATUS
37SGSG
12
20PigUs
14Pig
33IQ

大约几百行)

我会喜欢保留具有重复的“ PET”值的行,因此结果看起来像:

|ID|PET |COUNTRY
|--| --- |---|
|45| DOG |US|
|72 |DOG|CA|
|15 |CAT |CA|
|36 |CAT|US|
|37 |CAT|SG|
|20|PIG|US|
|14|PIG|RS|

如何删除没有重复的PET值的行?这会像

SELECT ID, PET, COUNTRY, COUNT(*)
FROM A 
GROUP BY PET, COUNTRY, ID
HAVING COUNT(*) >1

我不确定如何通过宠物分组值并仅挑选只有一排的组。谢谢!

I have a table A that looks similar to:

IDPETCOUNTRY
45DOGUS
72DOGCA
15CATCA
36CATUS
37CATSG
12SNAKEIN
20PIGUS
14PIGRS
33HORSEIQ

(has about a few hundred rows)

I would like to retain the rows that have a duplicated "PET" value, so the result looks like:

|ID|PET |COUNTRY
|--| --- |---|
|45| DOG |US|
|72 |DOG|CA|
|15 |CAT |CA|
|36 |CAT|US|
|37 |CAT|SG|
|20|PIG|US|
|14|PIG|RS|

How can I remove the rows that do not have duplicated PET values? Would it be something like

SELECT ID, PET, COUNTRY, COUNT(*)
FROM A 
GROUP BY PET, COUNTRY, ID
HAVING COUNT(*) >1

I am not sure how to group the values by PET and pick out the groups only containing one row. Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

春风十里 2025-02-21 02:07:02

简单地做什么:

WITH 
RES AS (SELECT PET, COUNT(*) FROM A GROUP BY PET HAVING COUNT(*) > 1)
SELECT ID, PET, COUNTRY FROM A WHERE PET IN (SELECT PET FROM RES);

这将为您提供所有行,其中有多个行中存在的宠物。

What about simply doing:

WITH 
RES AS (SELECT PET, COUNT(*) FROM A GROUP BY PET HAVING COUNT(*) > 1)
SELECT ID, PET, COUNTRY FROM A WHERE PET IN (SELECT PET FROM RES);

This would give you all rows with pets present in more than one row.

暖伴 2025-02-21 02:07:02

较短的方法是使用符合条件

SELECT *
FROM tab
QUALIFY COUNT(*) OVER(PARTITION BY PET) > 1;

A shorter way is to use QUALIFY:

SELECT *
FROM tab
QUALIFY COUNT(*) OVER(PARTITION BY PET) > 1;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文