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

按列值按LIKE分组

查锦程
2023-03-14
问题内容

给定这样的假设查询:

SELECT COUNT(*)
FROM subscriptions
GROUP by plan_type

并有一个类似于下面的表格:

+----+-----------------------+-------------+--+
| id |       plan_type       | customer_id |  |
+----+-----------------------+-------------+--+
|  1 | gold_2017             |         523 |  |
|  2 | gold_2016_recurring   |        2300 |  |
|  3 | silver_2016           |         234 |  |
|  4 | silver_2017_recurring |        2593 |  |
|  5 | platinum_recurring    |        4123 |  |
+----+-----------------------+-------------+--+

所需结果:

+-------+----------+
| count |   type   |
+-------+----------+
|     2 | gold     |
|     2 | silver   |
|     1 | platinum |
+-------+----------+

有什么方法可以使用GROUP BY和LIKE语句(LIKE“ silver”,LIKE“ gold”,LIKE“ platinum”等)对这些条目进行分组?


问题答案:

您可以使用case

SELECT (CASE WHEN plan_type LIKE 'silver%' THEN 'silver'
             WHEN plan_type LIKE 'gold%' THEN 'gold'
             WHEN plan_type LIKE 'platinum%' THEN 'platinum'
        END) as plan_grp, COUNT(*)
FROM subscriptions
GROUP by (CASE WHEN plan_type LIKE 'silver%' THEN 'silver'
               WHEN plan_type LIKE 'gold%' THEN 'gold'
               WHEN plan_type LIKE 'platinum%' THEN 'platinum'
          END);

某些数据库允许您在中使用列别名GROUP BY



 类似资料:
  • 问题内容: 假设我有一个这样的列表: 我如何最优雅地将其分组以在Python中获得此列表输出: 因此,这些值按次值分组,但顺序保留下来。 问题答案:

  • 我有列。 如何根据值将其拆分为2? 第一个将包含

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

  • 问题内容: 经过一些帮助MSChart-强制从Origin绘制折线图]后,我设法将以下MSSQL查询放在一起,以用于折线图。 但是,我有一个问题。该查询返回类似以下内容的内容: 这意味着我每天都在阅读,而实际上每个不同的值仅需要一行。在每种情况下,我都希望它第一次出现,因此对于上面的示例,我希望查询返回: 我看了看似是基于类似前提的几个问题,但是所有答复都是针对特定情况而量身定制的(有些甚至使用L

  • 问题内容: 我有一个数据库: 我想选择所有条目,但有一个例外: 与的所有条目均应分组 *与的 *最后一个条目应在之后 这是我期望的结果: 到目前为止,我已经做到了这一点(注意:“ change_count” = COUNT): 那就是我得到的: 如您所见,结果有两个问题: 条目按首次出现分组(应为last(最新)) 也被分组(不应该被分组) 我上面描述的任务可以实现吗?我该怎么做? 编辑: 问题答

  • 问题内容: 我正在尝试创建一个(sqlite)查询,该查询将执行GROUP BY,但不会将任何值’unknown’分组。例如,我有表: 使用正确的查询并带有“ GROUP BY名称,parent_id,school_id”,我需要返回以下行: 任何帮助将不胜感激。谢谢! 问题答案: 您很难用一个语句来完成此操作,但是可以使用两个语句的结果 所有的名单 ,但 添加()全部列表 SQL语句 请注意,我