# Badge for posts with Likes from a specific group

**URL:** <https://meta.discourse.org/t/badge-for-posts-with-likes-from-a-specific-group/276728>\
**Category:** Data & reporting\
**Tags:** sql-triggered-badge\
**Created:** [August 14, 2015, 8:44pm UTC](https://meta.discourse.org/t/badge-for-posts-with-likes-from-a-specific-group/276728 "2015-08-14T20:44:45Z")\
**Posts on this page:** 1\
**Showing post:** 25

<div class="post-metadata">

**Author:** ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)\
**Post date:** [August 26, 2023, 9:28pm UTC](https://meta.discourse.org/t/badge-for-posts-with-likes-from-a-specific-group/276728/25 "2023-08-26T21:28:40Z")

</div>

After a confusing blip with some deleted Likes throwing my tests off, I think this is a revised version of the one in the OP that fits your criteria: 🙂

```sql
SELECT p.user_id, MAX(p.created_at) granted_at
FROM badge_posts p
WHERE (SELECT COUNT(*)
        FROM post_actions pa
        WHERE pa.post_id = p.id
         AND post_action_type_id = 2 
         AND deleted_at IS NULL
         AND pa.user_id IN (SELECT gu.user_id FROM group_users gu WHERE gu.group_id = 3)
       ) >= 5
    AND p.user_id >= 0
GROUP BY p.user_id
HAVING COUNT(*) >= 10

```

 ![staff love](https://global.discourse-cdn.com/meta/original/4X/6/7/9/67953416fbaf69d7701cfaf7b220a2bf5dfd0083.png)

It works off the `badge_posts` view so it only counts posts from public categories, which you may want to take into consideration depending on your forum/category set up. Also, using `CURRENT_TIMESTAMP` for granted\_at is another option, but is probably down to a matter of taste.

---

_[View the full topic](https://meta.discourse.org/t/badge-for-posts-with-likes-from-a-specific-group/276728)._
