SQL笔试题 group by && case when

今天去面试,做了几个笔试题,有两个SQL题,SQL语句当时写的有点问题,回来新建两张表修改了一下。记录下,并有个疑问希望有人给解答一下

表结构如下

.SQL笔试题 group by && case when


1.查找2018年number总和前三位

sql如下:

mysql> select name,sum(number)as sum from corp_info where setup_date >='2018-04-01 00:00:00' group by name order by sum desc limit 3;
+------+-----+
| name | sum |
+------+-----+
| Lucy | 23  |
| Lily | 11  |
| Tom  | 6   |
+------+-----+

3 rows in set

2.要求展示如下查询结果(2018年number总和大于10)

+---------+-----+
| 至尊vip | 23  |
| vip     | 11  |

+---------+-----+

sql:

mysql> SELECT CASE 
WHEN sum > 20 THEN '至尊vip'
WHEN sum > 10
AND sum <= 20 THEN 'vip'
END AS name, sum
FROM (
SELECT name, SUM(number) AS sum
FROM corp_info
WHERE setup_date >= '2018-04-01 00:00:00'
GROUP BY name
HAVING sum > 10
ORDER BY sum DESC
LIMIT 5
) as temp

;

有没有哪位知道这个不用子查询可以查到的SQL语句?