首页 > 解决方案 > Oracle:按十年分组数据

问题描述

我有一个包含以下详细信息的客户表:

DOB 是 Oracle 中的日期数据类型

Customer ID   Name            DOB
1             Babu          20-07-1987
2             MohanLal      20-04-1962
3             Mammootty     20-04-1961

期望的结果:

Decade start    Decade end     No_of_customers
1960-01-01       1969-12-31            2
1980-01-01       1989-12-31            1

标签: sqloracle

解决方案


您可以尝试以下 SQL 查询:

 SELECT 
    substr(TO_CHAR(DOB,'YYYY-MM-DD'),1,3)||'0-01-01' as DECADE_START,
    substr(TO_CHAR(DOB,'YYYY-MM-DD'),1,3)||'9-12-31' as DECADE_END,
    count(1) AS NO_OF_CUSTOMERS
    FROM 
    customer_table
    group by 
    substr(TO_CHAR(DOB,'YYYY-MM-DD'),1,3)

推荐阅读