SQL查询计算不同值的数量

pin*_*ngu 2 mysql sql

x y

A P
A P
B P
B Q
Run Code Online (Sandbox Code Playgroud)

嗨,我需要一个查询来返回x的所有唯一值,有多少不同的y.因此,对于上述数据,它将返回:

x count
A 1
B 2
Run Code Online (Sandbox Code Playgroud)

谢谢

Mar*_*ers 6

使用GROUP BY和COUNT(DISTINCT ...):

SELECT x, COUNT(DISTINCT y) AS cnt_y
FROM yourtable
GROUP BY x
Run Code Online (Sandbox Code Playgroud)

结果:

x    cnt_y
A    1
B    2

测试数据:

CREATE TABLE yourtable (x VARCHAR(100) NOT NULL, y VARCHAR(100) NOT NULL);
INSERT INTO yourtable (x, y) VALUES
('A', 'P'),
('A', 'P'),
('B', 'P'),
('B', 'Q');