首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有特定条件(取决于行)的MySQL聚合

具有特定条件(取决于行)的MySQL聚合
EN

Stack Overflow用户
提问于 2019-06-14 07:19:38
回答 1查看 41关注 0票数 0

我正在努力弄清楚如何为累加添加一个额外的条件,这取决于特定的行。

我想做的是这样的:

代码语言:javascript
复制
select @datee := DATE_FORMAT(date, "%Y-%m") datee, count(distinct name) new
from requests where name not in (select name from requests where DATE_FORMAT(date, "%Y-%m") != @datee) 
group by datee;

换句话说:对于每个日期,它应该显示仅发生在那个特定月份的名字的数量。

结果可能如下所示:

代码语言:javascript
复制
datee   new
2018-11 343  <-- all these names only occur in 2018-11
2018-12 384  <-- all these names only occur in 2018-12
2019-01 438  ...
2019-02 460  ...
2019-03 442
2019-04 463
2019-05 470
2019-06 290

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-14 07:59:59

使用简化的数据版本,您可以检查名称是否仅在一个月内出现,并与计数(Distinct)连接。

代码语言:javascript
复制
drop table if exists t;
create table t
(name varchar (1), mm int);

insert into t values
('a',1),('a',2),('a',3),
('b',2),
('c',1),('c',1),
('d',3),
('e',2),('e',2);



select mm,count(distinct t.name) obs
from t
join
(
select name, count(distinct mm) occurances
from
t 
group by name having occurances = 1 
) s on s.name = t.name
group by mm;

+------+-----+
| mm   | obs |
+------+-----+
|    1 |   1 |
|    2 |   2 |
|    3 |   1 |
+------+-----+
3 rows in set (0.00 sec)

注:一个完全消失,因为出现在所有三个月。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56593304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档