1:M relation exclude row if any row in M table does not contain specific value
Plan A:

SELECT a.group
    FROM ( SELECT DISTINCT `group` FROM tbl ) AS a
    WHERE
         EXISTS ( SELECT * FROM tbl WHERE group = a.group
                                      AND status = 'ACTIVE' )
     AND
     NOT EXISTS ( SELECT * FROM tbl WHERE group = a.group
                                      AND status = 'NOT_BUYABLE' )


Plan B:

SELECT a.group,
       GROUP_CONCAT(status) AS stati
    FROM tbl AS a
    GROUP BY `group`
    HAVING      FIND_IN_SET('ACTIVE',      stati)
        AND NOT FIND_IN_SET('NOT_BUYABLE', stati)


(To get rid of the second column, you need to wrap that in another SELECT.)

(Suggest changing your column name away from the keyword "group".)

Recommend this for both queries:

 INDEX(`group`, `status`)


(I don't know which Plan will be faster.)