Index: app/main.py
===================================================================
--- app/main.py	(revision 74feebda7f8a1893cf11a9e279db71a5d14c99b7)
+++ app/main.py	(revision 1fdde1aea2a38338aed3f955b0fc81ffc3020c7c)
@@ -1038,2 +1038,58 @@
     ]
 
+@app.get("/reports/exceeding-user-total-balance", response_model=List[dict])
+def get_exceeding_user_total_balance(
+    user: User = Depends(get_current_user),
+    db: Session = Depends(get_db)
+):
+    """
+    Retrieve a list of users whose transactions exceed the total balance of all their accounts.
+    - Admins can view results for all users.
+    - Regular users can only see their own data.
+    """
+    # Subquery to calculate the total balance for each user
+    total_balance_subquery = (
+        db.query(
+            TransactionAccount.user_id.label("user_id"),
+            func.sum(TransactionAccount.balance).label("total_balance")
+        )
+        .group_by(TransactionAccount.user_id)
+        .subquery()
+    )
+
+    # Main query
+    query = (
+        db.query(
+            User.user_id,
+            User.user_name,
+            func.sum(TransactionBreakdown.spent_amount).label("total_transaction_amount"),
+            total_balance_subquery.c.total_balance.label("user_total_balance")
+        )
+        .join(TransactionAccount, TransactionAccount.user_id == User.user_id)
+        .join(TransactionBreakdown, TransactionBreakdown.transaction_account_id == TransactionAccount.transaction_account_id)
+        .join(Transaction, Transaction.transaction_id == TransactionBreakdown.transaction_id)
+        .join(total_balance_subquery, total_balance_subquery.c.user_id == User.user_id)
+        .filter(Transaction.date <= func.current_date())  # Only transactions up to the current date
+        .group_by(User.user_id, User.user_name, total_balance_subquery.c.total_balance)
+        .having(func.sum(TransactionBreakdown.spent_amount) > total_balance_subquery.c.total_balance)  # Exceeds total balance
+        .order_by(User.user_id)
+    )
+
+    # Apply user-specific filtering for non-admins
+    if not is_admin(user.email):
+        query = query.filter(User.user_id == user.user_id)
+
+    # Execute the query
+    results = query.all()
+
+    # Prepare response
+    return [
+        {
+            "user_id": row.user_id,
+            "user_name": row.user_name,
+            "total_transaction_amount": float(row.total_transaction_amount),
+            "user_total_balance": float(row.user_total_balance),
+        }
+        for row in results
+    ]
+
Index: cli/cli_app.py
===================================================================
--- cli/cli_app.py	(revision 74feebda7f8a1893cf11a9e279db71a5d14c99b7)
+++ cli/cli_app.py	(revision 1fdde1aea2a38338aed3f955b0fc81ffc3020c7c)
@@ -416,4 +416,5 @@
         print("5. View Transactions Exceeding Account Balance Currently")
         print("6. View Chronological List of Transactions Exceeding Total Account Balances")
+        print("7. View Transactions Exceeding User's Total Current Balance")
         choice = input("Choose a report option: ")
 
@@ -430,4 +431,6 @@
         elif choice == "6":
             get_exceeding_total_balances()
+        elif choice == "7":
+            get_exceeding_user_total_balance()
         elif choice == "0":
             break
@@ -605,4 +608,32 @@
         print(f"Request failed: {e}")
 
+def get_exceeding_user_total_balance():
+    headers = {"Authorization": f"Bearer {access_token}"}
+
+    print("\nTransactions Exceeding User's Total Balance")
+    try:
+        response = requests.get(f"{BASE_URL}/reports/exceeding-user-total-balance", headers=headers)
+
+        if response.status_code == 200:
+            records = response.json()
+            if not records:
+                print("No users with transactions exceeding their total balance.")
+            else:
+                print("\nUsers with Transactions Exceeding Total Balance:")
+                for record in records:
+                    print("-" * 50)
+                    print(f"User ID: {record['user_id']}")
+                    print(f"User Name: {record['user_name']}")
+                    print(f"Total Transaction Amount: {record['total_transaction_amount']:,.2f}")
+                    print(f"Total Balance: {record['user_total_balance']:,.2f}")
+                    print("-" * 50)
+        else:
+            print("Failed to fetch the report.")
+            error_message = response.json().get("detail", "Unknown error")
+            print(f"Error: {error_message}")
+    except requests.exceptions.RequestException as e:
+        print(f"Request failed: {e}")
+
+
 if __name__ == "__main__":
     main_menu()
