Let $a_i>0, b_i>0, \forall i $.
The optimizing problem is $$\max_{x_i}(\frac{\sum_{i=1}^{n}x_i a_i b_i}{\sum_{i=1}^{n}x_i b_i})$$ with constrains: \begin{align} x_i \in \{0,1\}\\ \sum_{i=1}^{n}x_i b_i\geq B \end{align}
A naive idea is to sort $\{(a_i, b_i)\}$ according to $a_i$ decs, then sum $b_i$ until the constrain is satisfied. This is call the greedy solution.
The question is how bad can it be comparing to the best solution. And under what condition it is the best solution.
Here is some my own thinking.
Firstly, it's easy to find a case that greedy solution is not the best. For example, $\{(a_i, b_i)\} = \{(100, 1), (10,100), (1,1)\}$ and $B=2$. The greedy solution is $\{1,2\}$ while the best is $\{1,3\}$.
Secondly, when bound $B$ is coincidentally reached for the greedy solution, then it's the best solution. Formally:
By the Proposition A, we can get an error estimation for greedy solution. Denote $B_k = \sum_1^k b_i$ and $V(B)$ and $G(B)$ the value of best solution and greedy solution with bound B respectively. For $B_k < B \leq B_{k+1}$, by the definition of "best solution" we have $$G(B_{k+1})=G(B)\leq V(B) \leq G(B_{k})$$ which implies $$0 \leq V(B)-G(B) \leq G(B_{k}) - G(B_{k+1})$$ In many practical applications, this upper bound is small enough.