The 3GPP Narrowband Internet of Thing (NB-IoT) is the promising technology that can provide multiple types of resource unit (RU) with a special repetition mechanism to improve the scheduling flexibility and transmission reliability. Since the IoT devices need to operate for a very long time, the energy consumption becomes a critical issue. In this paper, we study how to guarantee the quality of service (QoS) while minimizing the energy consumption for IoT devices. We first model the problem and then propose an energy-efficient scheme, which consists of two stages. The first stage tries to incur the lowest energy consumption of devices and satisfy their QoS requirement. The second stage determines the scheduling order to ensure the delay constraint while maintaining energy efficiency. Simulation results show that our scheme can serve more devices while saving their energy.