I have this table
+-------+----------+------+
| Group | Function | Name |
+-------+----------+------+
| G1 | F1 | ABC |
| G1 | F1 | ABC |
| G1 | F2 | ABC |
| G1 | F3 | ABC |
| G2 | F1 | XYZ |
| G2 | F2 | XYZ |
| G2 | F3 | XYZ |
| G2 | F4 | XYZ |
| G3 | F1 | LMN |
| G3 | F2 | LMN |
| G3 | F2 | LMN |
| G3 | F2 | LMN |
| G4 | F1 | QRX |
| G4 | F2 | QRX |
| G4 | F3 | QRX |
| G4 | F4 | QRX |
| G4 | F5 | QRX |
+-------+----------+------+
so
- G1 have 3 Distinct functions
- G2 have 4 Distinct functions
- G3 have 2 Distinct functions
- G4 have 5 Distinct functions
I want to take top 2 Groups that have highest number of distinct functions which are G4 and G2, then ungroup them to have the output like below :
+-------+----------+------+
| Group | Function | Name |
+-------+----------+------+
| G2 | F1 | XYZ |
| G2 | F2 | XYZ |
| G2 | F3 | XYZ |
| G2 | F4 | XYZ |
| G4 | F1 | QRX |
| G4 | F2 | QRX |
| G4 | F3 | QRX |
| G4 | F4 | QRX |
| G4 | F5 | QRX |
+-------+----------+------+
attempt :
select *
from mytable
where [Group] in
(
SELECT [Group]
FROM mytable
group by [Group]
)