SQL笔试题 group by && case when
今天去面试,做了几个笔试题,有两个SQL题,SQL语句当时写的有点问题,回来新建两张表修改了一下。记录下,并有个疑问希望有人给解答一下
表结构如下
.
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语句?