Solution 1:

I think DynamoDB isn't the right choice. As you said yourself:

DynamoDB bill depends on the throughput. 10 sec is not the point, let's say we can wait a whole minute.

DynamoDB is built for high throughput low latency. So the core feature of this Database is providing answers within single digit milliseconds. As you already figured out you pay per second which means if you don't need nearly the same amount (within the ability of scaling up and down) of reads/writes over a period of multiple hours DynamoDB is expensive as you pay for queries you don't need.

Our application executes a query which returns about 100k rows several times a day.

So AWS RDS seems to be more suitable for your case.

Solution 2:

Your use case could be implemented using DynamoDB for free.

You get 25gb of storage, 25RCU and 25WCU for nothing all year round as part of the AWS Free Tier. All you need to do is engineer your app to keep data throughput within these limits and your bill will amount to $0.00.

Just throttle your throughput, work in batches. You get 25 1Kb writes per second for free so teach your app to write 25 items per second - zero cost.