I can’t wrap my head around how this should work. Given below tables:
Articles:
article | class |
---|---|
1 | Class1 |
2 | Class2 |
3 | Class2 |
4 | Class1 |
5 | Class3 |
6 | Class1 |
7 | Class3 |
8 | Class2 |
9 | Class2 |
10 | Class3 |
11 | Class1 |
12 | Class1 |
Article codes:
article | code |
---|---|
1 | Code2 |
2 | Code9 |
3 | Code3 |
4 | Code4 |
5 | Code2 |
6 | Code4 |
7 | Code2 |
8 | Code1 |
9 | Code1 |
10 | Code7 |
11 | Code4 |
12 | Code9 |
Desired output:
class | max_group | code |
---|---|---|
Class1 | 3 | Code4 |
Class2 | 2 | Code1 |
Class3 | 2 | Code2 |
I would like to select the count of the most frequent code per group, as well as the actual code to go along with it. But I can’t figure out how to select the actual code (column “code”).
I’m fine with ties returning whichever value of the tied code.
Below query returns class and max_group but without the code value.
SELECT
DISTINCT articles.class,
MAX( COUNT( article_codes.code ) ) OVER( PARTITION BY class ORDER BY class ) AS group_max
FROM articles
INNER JOIN "/WHA/article_codes" As article_codes ON articles.article_no = article_codes.article_no
GROUP BY class, code
ORDER BY group_max DESC;
Result:
class | group_max |
---|---|
Class1 | 3 |
Class2 | 2 |
Class3 | 2 |
Desired result:
class | group_max | code |
---|---|---|
Class1 | 3 | Code4 |
Class2 | 2 | Code1 |
Class3 | 2 | Code2 |