That being said, looking at things from the outside, I tend to think that objects are not stored in a compressed form. It would make many operations much slower.
1. There are APIs to fetch byte ranges from objects. Would that work without decompressing the entire object?
https://docs.aws.amazon.com/whitepapers/latest/s3-optimizing...
2. You can query over multiple objects using SQL either via Athena or S3 Select.
https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-gla...
Edit:
Someone has already explained how byte range requests would work.