It should be viewed as a single transaction and not who sent bitcoins to whom. On the left hand side you have the inputs to the transaction, and on the right hand side you have the outputs. In Bitcoin, you do not have the concept of account balance. Each output of a transaction is locked with a script and anyone who provides solution to that script can spend those bitcoins.
Here is an example. Let us assume you run a business and have few employees. Your business takes only bitcoins as a form of payment and at the end of the day you make provide daily wages to your employees. So you would have your customers sending bitcoins to your company's address when they use your product. You present a different address to your customers every time so as that you know which customer sent how many bitcoins and also to maintain privacy. Now when you are making payments to your employees at the end of the day, you do not have enough bitcoins earned from one customer so you have to aggregate a few transactions from many customers. That is an example of what you are seeing.
In a generic scenario, even if all the customers make payment to a single address, each transaction that your customer will send you will have a different txid and output index which you will have to provide when you are spending those bitcoins. So you will still have to provide multiple inputs to your transaction when making payments where one single customer transactions does not cover it.
EDIT: Also as @AndrewChow mentioned in his answer, even if this was a CoinJoin transaction (multiple people joining inputs so as to mask who sent to whom), it is still very difficult to determine which outputs are created by which inputs and this method is also not fullproof.
As you were talking about customers and business, a question came to my mind : in both real and online shops (that accept bitcoin), do sellers generate a new address for each customer or each purchase ? – EinderJam – 2019-04-25T06:30:45.893
@EinderJam it depends. If it is an online transaction it is much easier to produce a different address everytime. Also, some vendors offer wallet service, and as that is centralized they can track payments. But if you are visiting a brick and mortar store, the address is generally static, however, the store can create different addresses if they install some software. – Ugam Kamat – 2019-04-25T06:51:11.390
If a store has only one address to receive payments from customers, how can it identify each customer and verify he paid ? – EinderJam – 2019-04-25T15:38:52.260
@EinderJam There is no way to know it for sure. The best way is to generate a unique address for each transaction. There can be scripts generated to use a P2SH transaction, but that would also mean generating unique scripts for each customer. – Ugam Kamat – 2019-05-02T11:07:20.573