commit 0e503e3aa1107dcedca7be20d919bf4f2712d8bd
Author: Michal Mládek <osvc.04923031@gmail.com>
Date:   Wed May 21 07:38:55 2025 +0200

    Related to #26434 - main logic

diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py
index 92a09c5840..89cfeb09fd 100644
--- a/django/db/models/sql/query.py
+++ b/django/db/models/sql/query.py
@@ -2303,6 +2303,12 @@ class Query(BaseExpression):
         else:
             self.default_ordering = False
 
+    def order_needs_grouping(self, order_by):
+        """It tells if order by could be removed or not
+        #26434 - QuerySet.count() has too aggresive strategy to remove it
+        """
+        return True
+
     def clear_ordering(self, force=False, clear_default=True):
         """
         Remove any ordering settings if the current query allows it without
@@ -2314,7 +2320,13 @@ class Query(BaseExpression):
             self.is_sliced or self.distinct_fields or self.select_for_update
         ):
             return
-        self.order_by = ()
+        order_by = []
+        if not force:
+            for item in self.order_by:
+                if not self.order_needs_grouping(item):
+                    continue
+                order_by.append(item)
+        self.order_by = tuple(order_by)
         self.extra_order_by = ()
         if clear_default:
             self.default_ordering = False
