我正在努力弄清楚如何为累加添加一个额外的条件,这取决于特定的行。
我想做的是这样的:
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;换句话说:对于每个日期,它应该显示仅发生在那个特定月份的名字的数量。
结果可能如下所示:
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谢谢你的帮助!
发布于 2019-06-14 07:59:59
使用简化的数据版本,您可以检查名称是否仅在一个月内出现,并与计数(Distinct)连接。
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)注:一个完全消失,因为出现在所有三个月。
https://stackoverflow.com/questions/56593304
复制相似问题