用于分组值 0-9、10.20 的多个 case 语句

Posted

技术标签:

【中文标题】用于分组值 0-9、10.20 的多个 case 语句【英文标题】:Multiple case statement for grouping values 0-9, 10.20 【发布时间】:2017-06-22 08:29:16 【问题描述】:

我有下面的第一个 case 语句,我需要与下面的 case 语句合并,以便像这样将值分组在一起:

days range   | Activity_submit
-------------------------------------
   0-9       |        11
  10-19      |        14
  20-29      |         3 

 SELECT 
    events_raw.properties ->> 'days_before_stay' AS "Days_before_stay",
    COUNT(CASE WHEN ((events_raw.properties ->> 'event_type') LIKE 
    'fs_mystay_activity_submit') THEN 1 ELSE NULL END) AS "Request Count"
    FROM events_raw

要与第一个合并的第二个 case 语句

select events_raw.properties ->> 'days_before_stay' AS "Days_before_stay" [days range], count(*) as [number of occurences]
from (
  select case  
    when days between 0 and 9 then ' 0- 9'
    when days between 10 and 19 then '10-19'
    else '20-99' end as range
  from events_raw) 
group by 1

【问题讨论】:

mysql postgresql,请不要标记未使用的产品。这是一个案例 expression 而不是 statement 【参考方案1】:

我没有看到您的表结构,但这里是您可以按表达式查看分组的示例。

SELECT 
    (id/10)*10 toOrder, -- addition field to sort by
    (id/10)*10 || ' - ' || ((id)/10+1)*10 AS range, 
    count(*) myCount
FROM report
GROUP BY 
    (id/10)*10,
    (id/10)*10 || ' - ' || ((id)/10+1)*10, -- group by expression
ORDER BY toOrder;

如果是 id,您可以使用任何整数字段。

【讨论】:

以上是关于用于分组值 0-9、10.20 的多个 case 语句的主要内容,如果未能解决你的问题,请参考以下文章

关于kafka更改消费者对应分组下的offset值

在sql中使用case语句根据某些条件对列进行分组

mysql 分组查询教程

使用 Python pandas 根据列增量对相同的值进行分组

用于从多个表中增加多个 case 函数的 SQL 语句

查询用于创建分组、聚合和过滤的行集的不同计数