【发布时间】:2020-03-12 21:23:23
【问题描述】:
我有以下代码,用于按年龄和性别获取客户数量、支出、交易和利润。我需要添加另一个案例语句,以便我还可以创建支出组。
SELECT
gender,
agegroup,
Count(DISTINCT individual_id),
Count(DISTINCT transaction_number),
SUM(spend)
FROM
(
SELECT
gender,
CASE WHEN age < 18 THEN '<18' WHEN age BETWEEN 18
AND 24 THEN '18-24' WHEN age BETWEEN 25
AND 32 THEN '25-32' WHEN age BETWEEN 33
AND 39 THEN '35-39' WHEN age BETWEEN 40
AND 46 THEN '40-46' WHEN age BETWEEN 47
AND 53 THEN '46-52' WHEN age BETWEEN 54
AND 60 THEN '53-58' WHEN age > 60 THEN '61+' END AS AGEGROUP,
individual_id,
transaction_number,
spend
FROM
(SELECT
gender,
age AS age,
a.individual_id as individual_id,
dollar_value_us as Spend,
transaction_number as transaction_number
FROM transaction_detail_mv a
join gender_details b on a.individual_id = b.individual_id)
)
GROUP BY
gender,
agegroup
ORDER BY
gender,
agegroup
当前结果:
性别 |年龄组 |计数(DISTINCTINDIVIDUAL_ID)|计数(DISTINCTTRANSACTION_NUMBER)|总和(花费) :----- | :------- | ---------------------------: | --------------------------------: | ---------: F | 46-52 | 1 | 2 | 22 中号 | 18-24 | 1 | 1 | 11 中号 | 40-46 | 2 | 6 | 62因此,与其过滤整个查询来查找价格介于 10 美元到 23 美元之间的客户数量,如下所示:我只需要一个查询,它将数据划分为支出群组。
select * from (SELECT
gender,
agegroup,
Count(DISTINCT individual_id),
Count(DISTINCT transaction_number),
SUM(spend) as spend
FROM
(
SELECT
gender,
CASE WHEN age < 18 THEN '<18' WHEN age BETWEEN 18
AND 24 THEN '18-24' WHEN age BETWEEN 25
AND 32 THEN '25-32' WHEN age BETWEEN 33
AND 39 THEN '35-39' WHEN age BETWEEN 40
AND 46 THEN '40-46' WHEN age BETWEEN 47
AND 53 THEN '46-52' WHEN age BETWEEN 54
AND 60 THEN '53-58' WHEN age > 60 THEN '61+' END AS AGEGROUP,
individual_id,
transaction_number,
spend
FROM
(SELECT
gender,
age AS age,
a.individual_id as individual_id,
dollar_value_us as Spend,
transaction_number as transaction_number
FROM transaction_detail_mv a
join gender_details b on a.individual_id = b.individual_id)
)
GROUP BY
gender,
agegroup
ORDER BY
gender,
agegroup) where spend between 10 and 20
我正在寻找的支出群组是:
<$10
$10-$20
$20-$30
$30-$40
$40+
这是小提琴链接:
https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=fe7bbe67da923fde05b5daf8ad991e7c
因此,例如,x 位消费范围在 10 美元到 40 美元之间的客户是 18 到 24 岁年龄段的女性。这就是我最终想要达到的目标。有没有办法将它合并到我当前的查询中??
任何帮助将不胜感激。谢谢!!
【问题讨论】:
-
请向我们展示您目前得到的结果,以及您期望的结果。设置db<>fiddle 也是一个好主意,这样其他人就可以有效地使用您的数据。
-
@GMB 我添加了小提琴链接。我也没有要显示的结果,但我只想创建一种格式,按消费范围、性别和年龄显示客户数量、交易数量