我有一个表数据为:
CREATE TABLE SERP (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
s_product_id INT,
search_product_result VARCHAR(255)
);
INSERT INTO SERP(s_product_id, search_product_result)
VALUES
(0, 'A'),
(0, 'B'),
(0, 'C'),
(0, 'D'),
(1, 'A'),
(1, 'E'),
(2, 'A'),
(2, 'B'),
(3, 'D'),
(3, 'E'),
(3, 'D');
数据集如下:
s_product_id | search_product_result
___________________________________________
0 | A
0 | B
0 | C
0 | D
-------------------------------------------
1 | A
1 | E
-------------------------------------------
2 | A
2 | B
-------------------------------------------
3 | D
3 | E
3 | D
我需要列出search_product_result
中出现的所有不同的count
值和这些值的s_product_id
频率。
必需的输出结果集:
DISTINCT_SEARCH_PRODUCT | s_product_id_frequency_count
------------------------------------------------------------
A | 3
B | 2
C | 1
D | 2 [occurred twice in 3, but counted only once.]
E | 2
此处,A
出现在three
s_product_id
中:0, 1, 2
,B
出现在two : 0, 2
中,依此类推。
D
在同一组3
中发生了两次,但在该组中仅被计数一次。
我尝试过grouping by search_product_result
,但这算为D twice in the same group
。
select search_product_result, count(*) as Total from serp group by search_product_result
输出:
search_product_result | Total
------------------------------------
A | 3
B | 2
C | 1
D | 3 <---
B | 2
答案 0 :(得分:2)
使用count(distinct()
select search_product_result, count(distinct s_product_id, search_product_result) as Total
from SERP
group by search_product_result
请参阅dbfiddle
答案 1 :(得分:1)
您可以在下面尝试-使用count(distinct s_product_id)
select search_product_result, count(distinct s_product_id) as Total
from serp group by search_product_result