按照分类求最值

id type1 name age
1 张三 2
2 李四 5
3 赵武 3
4 王五 6

想要的结果是求每个type下age最大的name是谁?

  1. select
  2. id,
  3. name,
  4. type1,
  5. max(age)
  6. from table1
  7. 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