How to remove 'GROUP BY' from SQL query produced from get_posts?

WordPress, Archive Cateory page. From default WP_Query->get_posts() we are getting something like this:

SELECT wp_posts.ID
FROM wp_posts
INNER JOIN wp_term_relationships
ON (wp_posts.ID = wp_term_relationships.object_id)
AND ( wp_term_relationships.term_taxonomy_id IN (5) )
AND wp_posts.post_type = 'post'
AND ((wp_posts.post_status = 'publish'))
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date DESC
LIMIT 0, 40

I want to remove this: “GROUP BY wp_posts.ID” from this SQL query, is it possible?
I’ve read about pre_get_posts and posts_groupby filter, but I see there is only way to change GROUP BY value, but how to remove it absolutely?

Solutions Collecting From Web of "How to remove 'GROUP BY' from SQL query produced from get_posts?"

You can use posts_groupby filter:

add_filter( 'posts_groupby', function( $groupby ) {

            return '';

} );

If you want to apply to remove the GROUP BY only to main query and in the frontend, you could do something like this:

add_filter( 'posts_groupby', function( $groupby ) {

    if( ! is_admin() && is_main_query() ) {

            $groupby = '';


    return $groupby;

} );