У меня есть данные таблицы:
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