Oracle SQL - 将行保留在特定列类别中列值较多的组内
我需要弄清楚如何从下表中获取结果,并且只显示图像中绿色突出显示的行。在每个 account_id/site_id 组合中(示例中显示了两个 - 123/usa 和 456/can),我只需要保留 group_ids,其中品牌的 Y(标志)数量较多(如side_id “can” - 该品牌的 group_id 1 中的 Y 数量比 group_id 2 中的 Y 数量多)。在 account_id/site 组合中,如果有两个 group_id 对于某个品牌具有超过两个 Y,则保留它们(如 site_id“usa”中所示)。
group_id | account_id | site_id | 品牌 | 标志 |
---|---|---|---|---|
1 | 123 | 美国 | 丰田 | N |
1 | 123 | 美国 | 丰田 | N |
1 | 123 | 美国 | 特斯拉 | Y |
2 | 123 | 美国 | 特斯拉 | Y |
1 | 123 | 美国 | 丰田 | Y |
2 | 123 | 美国 | 特斯拉 | N |
2 | 123 | 美国 | 丰田 | Y |
2 | 123 | 美国 | 特斯拉 | N |
3 | 123 | 美国 | 丰田 | Y |
3 | 123 | 美国 | 丰田 | N |
3 | 123 | 美国 | 特斯拉 | Y |
3 | 123 | 美国 | 特斯拉 | N |
4 | 123 | 美国 | 丰田 | Y |
4 | 123 | 美国 | 丰田 | Y |
4 | 123 | 美国 | 特斯拉 | N |
4 | 123 | 美国 | 特斯拉 | N |
1 | 456 | 罐 | 本田 | Y |
1 | 456 | 罐 | 本田 | Y |
1 | 456 | 罐 | 本田 | Y |
2 | 456 | 可以 | 本田 | Y |
2 | 456 | 可以 | 本田 | N |
2 | 456 | 可以 | 本田 | Y |
I need to figure out how to take the results from the table below and only show me the green highlighted rows in the image. Within each account_id/site_id combo (there are two shown in the example - 123/usa and 456/can), I only need to keep the group_ids where there are a larger number of Y (flag) for the brand (as seen in the side_id "can" - there are more Y in group_id 1 for that brand than there are in group_id 2). Within the account_id/site combo, if there are two group_ids that have more than two Y for a brand, then keep them both (as seen in the site_id "usa").
group_id | account_id | site_id | brand | flag |
---|---|---|---|---|
1 | 123 | usa | toyota | N |
1 | 123 | usa | toyota | N |
1 | 123 | usa | tesla | Y |
1 | 123 | usa | tesla | Y |
2 | 123 | usa | toyota | Y |
2 | 123 | usa | toyota | N |
2 | 123 | usa | tesla | Y |
2 | 123 | usa | tesla | N |
3 | 123 | usa | toyota | Y |
3 | 123 | usa | toyota | N |
3 | 123 | usa | tesla | Y |
3 | 123 | usa | tesla | N |
4 | 123 | usa | toyota | Y |
4 | 123 | usa | toyota | Y |
4 | 123 | usa | tesla | N |
4 | 123 | usa | tesla | N |
1 | 456 | can | honda | Y |
1 | 456 | can | honda | Y |
1 | 456 | can | honda | Y |
2 | 456 | can | honda | Y |
2 | 456 | can | honda | N |
2 | 456 | can | honda | Y |
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
通过使用窗口函数的组合,您可以计算每个组/帐户/网站/品牌的 Y 标志数量,然后找到使用另一个分析函数分区的 Y 标志的最大数量,然后仅返回这两个函数所在的行价值观匹配。
查询
输出
By using a combination of window functions, you can count the number of Y flags for each group/account/site/brand, then find the maximum number of Y flags of those partitioned with another analytic function, then only return the rows where those two values match.
Query
Output