Mysql 在多个日期上运行复杂的查询
我有以下查询以获取每月用户数量:Mysql 在多个日期上运行复杂的查询,mysql,Mysql,我有以下查询以获取每月用户数量: SELECT count(user_id) from subs where (started_at between @start_date and @start_date + interval 1 month or (expires_at>@start_date + interval 1 month and started_at<@start_date)) 从SUB中选择计数(用户id) 式中(从@start_日期到@start_日期+间隔1个月开
SELECT count(user_id) from subs
where (started_at between @start_date and @start_date + interval 1 month
or (expires_at>@start_date + interval 1 month and started_at<@start_date))
从SUB中选择计数(用户id)
式中(从@start_日期到@start_日期+间隔1个月开始)
或者(过期时间为>@start\u date+间隔1个月,开始时间为您希望按
年和月进行分组
假设您的
started\u at
列为日期类型,您可以使用GROUP\u按年份(started\u at)、月份(started\u at)
,或者也可以使用DATE\u FORMAT
将列值格式化为单字符串值,格式为YYYY-MM,并按其分组。也可以选择与列相同的值,以获得所需的正确标识符。您可能需要类似的内容:
SELECT YEAR(started_at) as 'Year',
MONTH(started_at) as 'Month',
COUNT(user_id) as 'Users'
FROM subs
GROUP BY YEAR(started_at),MONTH(started_at);
请注意,如果一个月没有用户,此查询将不会返回该月的条目。如果您还想包括用户为0的月份,则需要更复杂的查询;请检查更多信息。似乎您没有收到我的消息:我想运行查询(开始日期和开始日期之间+间隔1个月或更长时间)(过期时间>开始日期+间隔1个月,我与CBroe在这一方面合作。你应该添加他提到的信息,以便我们准确了解你想要什么。如果你无法共享数据库中的数据,请提供一个虚拟样本和预期结果。似乎你没有得到我:我想运行查询(从开始日期到开始日期+间隔1个月或(过期日期>开始日期+间隔1个月)到开始日期如果这里有多人似乎不理解你,那么到目前为止,你的解释可能会有问题。请编辑你的问题,并包括表结构、示例数据和预期结果。