mysql - 计数超过 1 个有子句
问题描述
所以我有一个案例来自我之前的问题如何计算超过 1 个有子句 mysql
假设我有这样的数据假人
CREATE TABLE order_star_member ( users_id INT,
createdAt DATE,
total_price_star_member DECIMAL(10,2) );
INSERT INTO order_star_member VALUES
(12,'2019-01-01',100000),
(12,'2019-01-10',100000),
(12,'2019-01-20',100000),
(12,'2019-02-10',100000),
(12,'2019-02-15',300000),
(12,'2019-02-21',500000),
(13,'2019-01-02',900000),
(13,'2019-01-11',300000),
(13,'2019-01-18',400000),
(13,'2019-02-06',100000),
(13,'2019-02-08',900000),
(13,'2019-02-14',400000),
(14,'2019-01-21',500000),
(14,'2019-01-23',200000),
(14,'2019-01-24',300000),
(14,'2019-02-08',100000),
(14,'2019-02-09',200000),
(14,'2019-02-14',100000),
(15, '2019-03-04',1000000),
(14, '2019-03-04', 300000),
(14, '2019-03-04', 350000),
(13, '2019-03-04', 400000),
(15, '2019-01-23', 620000),
(15, '2019-02-01', 650000),
(12, '2019-03-03', 750000),
(16, '2019-03-04', 650000),
(17, '2019-03-03', 670000),
(18, '2019-02-02', 450000),
(19, '2019-03-03', 750000);
SELECT * from order_star_member;
然后我每月汇总数据
-- summary per-month data
SELECT users_id,
SUM( CASE WHEN MONTHNAME(createdAt) = 'January'
THEN total_price_star_member
END ) total_price_star_member_January,
SUM( CASE WHEN MONTHNAME(createdAt) = 'February'
THEN total_price_star_member
END ) total_price_star_member_February,
SUM( CASE WHEN MONTHNAME(createdAt) = 'March'
THEN total_price_star_member
END ) total_price_star_member_March
FROM order_star_member
GROUP BY users_id
ORDER BY 1;
在我之前的问题中,我有一个名为 order_star_member 的数据,其中包含 createdAt 作为交易日期,users_id 作为买家,total_price_star_member 作为交易金额。在这种情况下,我想找出拥有明星会员的买家(一个月内的交易> = 600000)并找出他们来自哪里,order_star_member 的数据(虚拟)从 2019 年 1 月开始到 2019 年 3 月,并由@解决带有此查询的 Akina
SELECT COUNT(users_id) count_star_member,
year_and_month DIV 100 `year`,
year_and_month MOD 100 `month`
FROM (SELECT users_id,
MIN(year_and_month) year_and_month
FROM ( SELECT users_id,
DATE_FORMAT(createdAt, '%Y%m') year_and_month,
SUM(total_price_star_member) month_price
FROM order_star_member
GROUP BY users_id,
DATE_FORMAT(createdAt, '%Y%m')
HAVING month_price >= 600000 ) starrings
GROUP BY users_id
HAVING SUM(year_and_month = '201903') > 0 ) first_starrings
GROUP BY year_and_month
ORDER BY `year`, `month`;
解释我想找出3月份每个明星成员(一个月内交易> = 600000的users_id)的分布,以及3月份之前users_Id在哪里进行交易> = 600.000(如果users_Id在3月份第一次进行交易,然后 users_Id 进入 March to March 统计)
但是在 2019 年 4 月要成为明星会员,您必须交易 >= 700.000 而不是 600.000,所以我想找出在 2019 年 4 月交易 >= 700.000(明星会员)的用户的数据在 2019 年 4 月的一个月内并做2019年4月前第一笔交易,一个月总金额60万
所以我应该在这个查询中更改哪一部分以找出在一个月内四月进行总交易> = 700.000并进行他的第一笔交易(如果四月之前的第一笔交易)> = 600.000的用户
解决方案
推荐阅读
- hbase - org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:157)
- docker - Docker 修剪,如何删除新图像并保留旧图像(与“直到”过滤器相反)
- node.js - node --max_old_space_size 不在 Linux 环境中分配内存
- firebase - 使用 Firestore 搜索一个字段
- apigee - 为错误“Invalid ApiKey for given resource”创建自定义错误消息在 apigee 中不起作用
- python - if-else 语法错误(披萨派送问题)
- c++ - 在 C++ 中转换异常类型
- sql - 如何在 Redshift SQL 中计算移动年度总计(滚动 12 个月)?
- html - 如何在html电子邮件中获取whatsapp图标?
- python - 只写一个回复,为什么?