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

按某些值分组

宋经业
2023-03-14
问题内容

我正在尝试创建一个(sqlite)查询,该查询将执行GROUP BY,但不会将任何值’unknown’分组。例如,我有表:

id |   name  | parent_id | school_id |
 1 | john    |   1       |    1      |
 2 | john    |   1       |    1      |
 3 | john    |   1       |    1      |
 4 | nick    |   2       |    2      |
 5 | nick    |   2       |    2      |
 6 | nick    |   3       |    3      |
 7 | bob     |   4       |    4      |
 8 | unknown |   5       |    5      |
 9 | unknown |   5       |    5      |
 10| unknown |   5       |    5      |

使用正确的查询并带有“ GROUP BY名称,parent_id,school_id”,我需要返回以下行:

id |   name  | parent_id | school_id |
 1 | john    |   1       |    1      |
 3 | nick    |   2       |    2      |
 4 | nick    |   3       |    3      |
 5 | bob     |   4       |    4      |
 6 | unknown |   5       |    5      |
 7 | unknown |   5       |    5      |
 8 | unknown |   5       |    5      |

任何帮助将不胜感激。谢谢!


问题答案:

您很难用一个语句来完成此操作,但是可以UNION使用两个语句的结果

  • GROUP所有的名单 ,但 unknown
  • 添加UNION)全部列表unknown

SQL语句

SELECT MIN(id), name, parent_id, school_id
FROM   YourTable
WHERE  name <> 'unknown'
GROUP BY
       name, parent_id, school_id
UNION ALL
SELECT id, name, parent_id, school_id
FROM   YourTable
WHERE  name = 'unknown'

请注意,我假设您unknown在结果中发布了错误的ID



 类似资料:
  • 我有一个数组:int[]arr={1,2,3,4,5,6} 我需要打印一些从1到5的索引值,为什么我不能在java中这样做?system.out.println(ARR[1,5])那么该如何完成呢?

  • 问题内容: 在Pandas数据框上进行分组的最佳方法是什么,但要从该分组中排除一些列呢?例如我有以下数据框: 我想对“国家”和“项目代码”列进行分组,并且仅计算Y1961,Y1962和Y1963列下的行总和。结果数据框应如下所示: 现在我正在这样做: 但是,这也会将Item_Code列中的值相加。有什么方法可以指定要包括在操作中的列和要排除的列? 问题答案: 您可以选择分组依据的列: 请注意,传递

  • 我有一些对象的列表。我想先按一些属性和空值排序,比如在查询中: 我知道当我有字符串列表时,我可以这样做: 但是当我有一些类的对象列表时呢? 有什么建议我可以用java实现吗?

  • 问题内容: 给定这样的假设查询: 并有一个类似于下面的表格: 所需结果: 有什么方法可以使用GROUP BY和LIKE语句(LIKE“ silver”,LIKE“ gold”,LIKE“ platinum”等)对这些条目进行分组? 问题答案: 您可以使用: 某些数据库允许您在中使用列别名。

  • 有没有非终端版本的或其他一些简洁的方式来流式传输生成的Map条目/值? 我发现自己想在分组后流过值但我能想到的最好的方法并不漂亮:

  • 我有一个xml,我想提取其中的一部分。但我无法得到它。如果我使用变量并将每个键放入变量中,我可以得到那个部分,但这是一个非常漫长的过程。那幺,是否有任何简短的流程? 下面是 XML : 我想要< code>network link集合中的xml。