First of all we have to understand the difference between dense and sparse index. Dense index is called dense because the records are arranged based on an unordered attribute and hence the records are not sorted. So for searching a key, pointer from index to every record is required.
A sparse index is called so because we need less no of pointers from index to records of database as the records are arranged based on ordered key and hence we can quickly access the record by going to block first and then access the following records without having individual index for each of the records.
Primary indexing or clustered indexing means indexing is done based on an ordered field and that should be a candidate key of the relation and the physical ordering of the records in disk is based on this order. So, a table can have only one primary/clustered index though this can be changed by reordering the records based on a new clustered index anytime. So, primary/clustered index can easily be sparse.
Now secondary index is any index that is not primary. So secondary index must be dense index as the index is guaranteed not to be in the same order as the physical order of records. Secondary index can be either built over key or non key attribute.