【问题标题】:how to write a SQL script that group clients by age and supply they purchase?如何编写一个按年龄对客户进行分组并提供他们购买的 SQL 脚本?
【发布时间】:2017-10-25 17:37:20
【问题描述】:

我有一个关于在 SQL Server 中编写脚本的问题。我有很多客户称为客户的桌子。该表包含客户 ID、供应、出生日期和购买日期等字段。

我需要编写一个脚本来拉动我的客户并按年龄(18 岁以下、18 岁以上)对他们进行分组并提供他们购买的服务。每个客户都有一份供应,但可以多次购买。

我创建了一个函数,根据出生日期和购买日期给出我的年龄。

到目前为止我的查询是:

SELECT 
    DATEDIFF(Year, dob, purchase date) AS age, fixed.Date.Year, 
    supply, client id, dob, purchase date
FROM 
    client 

我需要拉出一个查询,得到以下结果:

Supply,   number of times purchased,     age

我遇到的问题是按年龄(汇总)对客户进行分组。我不希望他们单独返回每一行,我想按供应和年龄对他们进行分组。

【问题讨论】:

    标签: sql-server group-by count case datediff


    【解决方案1】:

    不确定您期望什么结果,但在我看来,CASE 语句可以与 group by 一起使用。

    SELECT 
        DATEDIFF(Year, dob, purchase date) AS age, [Other columns]
    FROM 
        client 
    GROUP BY 
        CASE
         WHEN DATEDIFF(Year, dob, purchase date) < 18 THEN '<18'
         WHEN DATEDIFF(Year, dob, purchase date) >= 18 THEN '>=18'
        END, [Other columns]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      • 1970-01-01
      • 1970-01-01
      • 2020-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多