按照分类求最值
id | type1 | name | age |
---|---|---|---|
1 | 狗 | 张三 | 2 |
2 | 狗 | 李四 | 5 |
3 | 猫 | 赵武 | 3 |
4 | 猫 | 王五 | 6 |
想要的结果是求每个type下age最大的name是谁?
select
id,
name,
type1,
max(age)
from table1
group by type1
没有见过的一种写法
select
*
from
table1
where
id in (
select
substring_index(group_concat(id order by age desc), ',', 1)
from
table1
group by
type1)
按照分类分情况计数
1.一个表tb1,字段是name,class,score。分别代表姓名,所在班级,分数。要求用一条语句查出每个班的及格人数和不及格人数,格式为:class,及格人数,不及格人数。(60分及格)
SELECT
class,
COUNT(CASE WHEN score >= 60 THEN 1 END) AS '及格',
COUNT(CASE WHEN score < 60 THEN 1 END) AS '不及格'
FROM tb1 GROUP BY class