当前位置: 首页 > 面试题库 >

SQL查询以特定条件分组

孔权
2023-03-14
问题内容

我的表数据

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-%'

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


问题答案:
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。



 类似资料:
  • 我在代码中使用条件查询。它总是激发 相反,我想忽略查询中的一列(字段),因为该字段以字节形式存储了大量数据。导致性能问题。 有谁能给出一个主意吗? 一些更新 我在查询中添加了一个投影,它创建了一个类似... 现在问题就像..中的未知列“y4_”以及y8_和y5_的相同错误意味着关闭它给出错误的所有内容。 我把它修改成像... 而且奏效了。但是不知道在HQL里面怎么修改?

  • 问题内容: 我在代码中使用了条件查询。它总是会开火 相反,我想忽略查询中的一列(字段),因为该字段以字节为单位存储大量数据。这会导致性能问题。 有人可以对此提出想法吗? 一些更新 我在查询中添加了一个投影,它创建了一个查询,例如… 现在的问题就像.. 和y8_的相同错误,y5_表示所有接近它给出错误的地方。 我将其修改为Query … 而且有效。但是我不知道如何在HQL中对其进行修改? 问题答案:

  • 问题内容: 假设我有一个名为“ Company”的表,其中包含CompanyID关键字。还有另一个名为“ CompanyAddress”的相关表,该表具有CompanyID外键,因此可以轻松地建立联接。 该CompanyAddress表可以具有给定公司的多个地址,例如AddressType = 1或AddressType = 2 用于获取字段的联接等是微不足道的,但是我需要一个条件,在该条件下查询

  • 在“SQL”图表,你可以分析查询并确定查询速度慢的原因。 若要深入查看特定查询,请点击图例标签或双击图表上的条形段。你可以了解查询过去的执行情况,并在单个画面中查看所有相关的故障排除信息。点击选项卡以显示与查询有关的更多图表。 分析图表 选择“分析”选项卡,然后向下滚动页面以查看分析图表。将鼠标悬停在其中一个图表上的某个点上,会自动弹出带有垂直线的工具提示值。

  • 问题内容: 如果我有一个看起来像这样的表: 还有一个THINGS表,如下所示: 我正在尝试提出一个纯SQL查询,该查询可以让我找出什么可以访问什么。基本上,我想要一个看起来像这样的查询: 并返回“ John”和“ Mary”。关键是访问事物所需的许可数量是任意的。 我觉得这应该很明显,但是我无法提出一个优雅的解决方案。首选与Oracle兼容的解决方案。 编辑: Kosta和JBrooks的解决方案

  • 在一个日期列中有一个表,在同一个日期的不同时间有这么多总计的条目,但我不担心时间。我需要找到某些日期所有总额,随着用户名。当我使用下面的查询。它显示语法错误 选择用户名,总额,从账单日期='2013-04-12' 在上面的查询日期是列名,请帮我。