snowflake cloud data platformSQL获取超过两列的最大值的行



我在雪花中有一个这样的表。它支持ANSI SQL,所以如果你不熟悉这个数据库也不用担心。

tbody> <<tr>超级公司英国布朗史密斯布朗
销售员 客户 国家
布朗
另一个客户英国
Contoso我们
测试公司我们

QUALIFY可用于过滤每个salesman的最高值:

SELECT salesman,
country,
count(country) AS cnt
FROM customertable
GROUP BY salesman, country
QUALIFY RANK() OVER(PARTITION BY salesman ORDER BY cnt DESC) = 1

关于你的问题,我猜你想要按国家而不是国家来计算客户。这应该使用窗口函数来完成工作。和资格Window Functions文档

CREATE OR REPLACE TABLE customers (salesman STRING, customer STRING, country STRING);
INSERT INTO customers
VALUES
('Brown', 'Super Company', 'UK'),
('Brown', ' Another customer', 'UK'),
('Smith', 'Contoso', 'US'),
('Brown', 'Test company', 'US')
;
SELECT
salesman,
country,
COUNT(customer) AS nb_customer
FROM customers
GROUP BY
salesman,
country
QUALIFY RANK() OVER (PARTITION BY salesman ORDER BY nb_customer DESC) = 1
;

最新更新