0

我一直在工作中实现超集,到目前为止我很喜欢它。但是,我有这样一张桌子:

name,age,gender
John,42,M
Sally,38,F
Patricia,27,F
Steven,29,M
Amanda,51,F

我想为每个名字定义一个新的指标,计算年轻的人数。我的数据在 MySQL 数据库中,我想对于一个人来说,我可以这样编写查询:

SELECT COUNT(DISTINCT name) from users where users.age <= 42;

比如说,约翰的那一排。那么,我如何为整个表连续执行此操作?

4

1 回答 1

0

您的查询可能类似于

select *, 
  (select count(distinct all_users.name) from users all_users where all_users.age <= users.age)
FROM users

就影子而言-在大型数据集上运行这将变得非常昂贵。

如果是这种情况,您可能想尝试在年龄上放置一个索引,或者完全非规范化该计数 - 权衡是插入会变得更慢。

于 2017-12-21T16:13:49.493 回答