Create custom block module with sorting of block content
You can do it with views + some minimal coding in your module: Make the view as you need, use a custom block to put 4 link with 4 different query arg: mysite.com/node/1?no_files=1, mysite.com/node/1?post_date=1 etc.
For the dropdown you can use ctools jump menu feature, it's a simple drupal_get_form with this parameters.

If the dropdown is ok, let's modify the view's result based on query_arg: See hook_views_query_alter.

To get how do you need to change the query, I'm used to create the same view with all different filter what I need, and put file_put_contents('/tmp/log', var_export($query)); into your _view_query_alter implementation. If all different query of views are in log, it's easy to figure out, what do you need to modify in $query.

To order your views by file attachment exists, just add a filter named Field: Your 
File Attachment to the view, and use the operator Is Not Empty (NOT NULL). (As I understand, in this one case, you want to filter the query, not to sort.)

Most comment sorting need the sort criteria: Content: Comment count, Most viewed is not so exact, it depends, what do you use to tracking content viewing.