Wireless sensor networks (WSNs) have recently gained the attention of researchers in many challenging aspects. The most important challenge in these networks is energy conservation. One of the most popular solutions in making WSNs energy-efficient is to cluster the networks. In clustering, the nodes are divided into some clusters and then some nodes, called cluster-heads, are selected to be the head of each cluster. In a typical clustered WSN, the regular nodes sense the field and send their data to the cluster-head, then, after gathering and aggregating the data, the cluster-head transmits them to the base station. Clustering the nodes in WSNs has many benefits, including scalability, energy-efficiency, and reducing routing delay. In this paper we present a state-of-the-art and comprehensive survey on clustering approaches. We first begin with the objectives of clustering, clustering characteristics, and then present a classification on the clustering algorithms in WSNs. Some of the clustering objectives considered in this paper include scalability, fault-tolerance, data aggregation/fusion, increased connectivity, load balancing, and collision avoidance. Then, we survey the proposed approaches in the past few years in a classified manner and compare them based on different metrics such as mobility, cluster count, cluster size, and algorithm complexity.