Если ваша оконная функция поддерживает СУБД, вы можете попробовать это.
Попробуйте использовать CTE
подзапрос записи, чтобы получить COUNT
от County
, Mobile
, OS
, Browser
и введите row_number
, сделайте номер строки по cnt
, затем получите rn=1
.
CREATE TABLE T(
County VARCHAR(50),
Mobile VARCHAR(50),
OS VARCHAR(50),
Browser VARCHAR(50)
);
INSERT INTO T VALUES ('USA','iPhone', 'iOS', 'Safar');
INSERT INTO T VALUES ('UK','Samsung', 'Android' , 'Chrome');
INSERT INTO T VALUES ('India','Motorola','Android' , 'Chrome');
INSERT INTO T VALUES ('India','Nokia','Android', 'Chrome');
INSERT INTO T VALUES ('Russia','Nokia','Microsoft', 'Edge');
INSERT INTO T VALUES ('Germany','Sony','Android','Chrome');
INSERT INTO T VALUES ('India','Sony','Android','Chrome');
INSERT INTO T VALUES ('Russia','Nokia','Microsoft','Edge');
INSERT INTO T VALUES ('Germany','Sony','Android','Chrome');
INSERT INTO T VALUES ('India','Motorola','Android','Chrome');
INSERT INTO T VALUES ('Russia','Nokia','Android','Edge');
INSERT INTO T VALUES ('Germany','Sony','Android','Chrome');
Запрос 1 :
with cte as (
select County,Mobile,OS,Browser,COUNT(*) cnt
from T
GROUP BY County,Mobile,OS,Browser
)
SELECT
t1.County,
t1.Mobile,
t1.OS,
t1.Browser
FROM (
select t1.*,row_number() over(partition by County order by cnt desc) rn
from cte t1
) t1
where t1.rn = 1
ORDER BY COUNTY desc
Результаты :
| COUNTY | MOBILE | OS | BROWSER |
|---------|----------|-----------|---------|
| USA | iPhone | iOS | Safar |
| UK | Samsung | Android | Chrome |
| Russia | Nokia | Microsoft | Edge |
| India | Motorola | Android | Chrome |
| Germany | Sony | Android | Chrome |