sql - 根据日期分组和重命名
问题描述
我有一个工作查询,它生成一个包含两列的表。
SELECT months, count(user_id) as count
from
(
select u.user_id, u.region_id, u.latest_login, year(u.latest_login),
period_diff(date_format(now(), '%Y%m'),date_format(u.latest_login, '%Y%m')) as months
from users u
where u.date_ended = 0000-00-00
AND country_id = 1
AND intRoleId = 3
)
t1
group by months;
它产生这张表:
我想根据月数进行分组。我检查了文档,下面的查询似乎是我需要的,但我得到一个语法错误。我尝试更改逻辑格式和命名约定,但不确定这里出了什么问题。
SELECT months, count(user_id) as count,
sum(months=<2) as 'Less than 3 months',
sum(months>2 and months=<5) as '3-6 months',
sum(months>5 and months=<11) as '6-12 months',
sum(months>11 and months=<24) as '12-24 months',
sum(months>24 and months<20000) as 'More than 24 months',
sum(months>20000) as 'Never'
from
(
select u.user_id, u.region_id, u.latest_login, year(u.latest_login),
period_diff(date_format(now(), '%Y%m'),date_format(u.latest_login, '%Y%m')) as months
from users u
where u.date_ended = 0000-00-00
AND country_id = 1
AND intRoleId = 3
group by months
)
t1;
非常感谢您的帮助。
解决方案
要转义列名,请使用双引号而不是单引号。但是,我会推荐不需要转义的名称。此外,将布尔值转换为数字
select months, count(user_id) as count,
sum( (months=<2)) as months_less_than_3_,
sum( (months>2 and months=<5)) as months_3_6,
sum( (months>5 and months=<11)) as months_6_12,
sum( (months>11 and months=<24)) as months_12_24,
sum( (months>24 and months<20000)) as months_25_plus,
sum( (months>20000)) as Never
推荐阅读
- flutter - 在 Android 上开始录制视频时 Flutter 相机冻结
- c# - 使用 C# 从 Table 中找不到的文件夹中删除图像
- google-analytics - 在 Google Analytics 中删除另一个网站数据
- javascript - Fabric.js 小圆圈限制在画布中心的半径范围内
- javascript - 如何使用 Mongoose 过滤器显示嵌套数组中的数据?
- c++ - 串行端口编码
- excel - 粘贴导致 VBA 行为不合逻辑
- python - pandas中excel中的匹配索引函数
- notepad++ - Notepad ++在find diolouge中选择两行
- web-services - 在 ColdFusion 中使用二进制安全令牌生成 Web 服务安全性