SQL

SQL查询以特定条件分组

发布于 2021-04-15 10:26:31

我的表数据:

id      fieldId  Name   Text
----    ------  -----   ----
1        101    name1   a1
2        102    name2   a2
3        101    name1   a1
4        103    name3   a2
5        102    name2   a3
6        101    name1   c1
7        101    name1   a3
8        102    name2   
9        101    name1   b2
10       103    name3   c1

我需要像这样的输出

Name    Count(fieldId)  Count_id_text_is_either_a1_or_a2_a3
------      ------        -------
name1   4                   2
name2   3                   2
name3   2                   1
  • Name =我需要按fieldId分组。
  • Count(fieldId) =计算每组记录。
  • Count_id_text_is_either_a1_or_a2_a3=这是我仅在需要分组记录数时才需要的列Text like 'a1-%' or 'a2-%' or 'a3-%'

可以通过单个查询完成吗?如果是,请说明如何?如果否,那么最有效的方法是什么?

关注者
0
被浏览
106
1 个回答
  • 面试哥
    面试哥 2021-04-15
    为面试而生,有面试问题,就找面试哥。
    select Name, 
        count(*) as CountAll, 
        count(case when Text like 'a1-%' or Text like 'a2-%' or Text like 'a3-%' then 1 end) as CountA1A2A3
    from MyTable
    group by Name
    

    如果愿意,也可以使用RegEx。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看