My query fails to segment the results as intended. What am I doing wrong? Update: 
Re-phrasing the question. 

Below are the results and the desired results. What do I need to do to get the desired results?  See http://sqlfiddle.com/#!2/d0e13c/69

Thank you

SELECT CONCAT('Greater than or equal to ',t.val2,':', count(*)) FROM
(
SELECT 
  CASE 
    WHEN val&gt;=1000 THEN 1000
    WHEN val&gt;=500 THEN 500
    WHEN val&gt;=400 THEN 400
    WHEN val&gt;=300 THEN 300
    WHEN val&gt;=200 THEN 200
    WHEN val&gt;=100 THEN 100 
    WHEN val&gt;=10 THEN 10
    WHEN val&gt;=5 THEN 5
    WHEN val&gt;=2 THEN 2
    WHEN val&gt;=1 THEN 1
  END AS 'val2'
FROM e
) as t
GROUP BY t.val2
ORDER BY t.val2 DESC 


Results:

Greater than or equal to 1000:1
Greater than or equal to 500:1
Greater than or equal to 400:2
Greater than or equal to 300:1
Greater than or equal to 200:2
Greater than or equal to 100:3
Greater than or equal to 10:1
Greater than or equal to 5:1
Greater than or equal to 1:2


Desired results:

Greater than or equal to 1000:1
Greater than or equal to 500:2
Greater than or equal to 400:4
Greater than or equal to 300:5
Greater than or equal to 200:7
Greater than or equal to 100:10
Greater than or equal to 10:11
Greater than or equal to 5:12
Greater than or equal to 2:12
Greater than or equal to 1:14
It's possible to convert the CASE options into rows of a temp table, a JOIN with a less or equal condition to the data table will get the rows.

SELECT CONCAT('Greater than or equal to ',a.val,':', count(e.val))
FROM   (Select 1000 val UNION ALL 
        Select 500      UNION ALL
        Select 400      UNION ALL
        Select 300      UNION ALL
        Select 200      UNION ALL
        Select 100      UNION ALL
        Select 10       UNION ALL
        Select 5        UNION ALL
        Select 2        UNION ALL
        Select 1       ) a
       LEFT JOIN e ON e.val &gt;= a.val
GROUP BY a.val
ORDER BY a.val  DESC


SQLFiddle demo

Another way doesn't even need the temp table, but will get the results as columns instead of as rows, if you care about the results and not about the format

SELECT CONCAT('Greater than or equal to 1000: '
             , SUM(Case When val &gt;= 1000 Then 1 Else 0 End)) _1000
     , CONCAT('Greater than or equal to  500: '
            , SUM(Case When val &gt;= 500 Then 1 Else 0 End)) _500
     , CONCAT('Greater than or equal to  400: '
            , SUM(Case When val &gt;= 400 Then 1 Else 0 End)) _400
     , CONCAT('Greater than or equal to  300: '
            , SUM(Case When val &gt;= 300 Then 1 Else 0 End)) _300
     , CONCAT('Greater than or equal to  200: '
            , SUM(Case When val &gt;= 200 Then 1 Else 0 End)) _200
     , CONCAT('Greater than or equal to  100: '
            , SUM(Case When val &gt;= 100 Then 1 Else 0 End)) _100
     , CONCAT('Greater than or equal to   10: '
            , SUM(Case When val &gt;= 10 Then 1 Else 0 End)) _10
     , CONCAT('Greater than or equal to    5: '
            , SUM(Case When val &gt;= 5 Then 1 Else 0 End)) _5
     , CONCAT('Greater than or equal to    2: '
            , SUM(Case When val &gt;= 2 Then 1 Else 0 End)) _2
     , CONCAT('Greater than or equal to    1: '
            , SUM(Case When val &gt;= 1 Then 1 Else 0 End)) _1
FROM   e


SQLFiddle demo