我是SQL的新手。我正在尝试做一个简单的连接查询。
我有两个表:
-
第一个表
albums
,列名称为album_id
,user_id
*和album_img_count
(album_img_count
-列表示有多少张图片属于一个相册)。 -
第二个表is
users
withuser_id
*.
*user_id
对于两个表是相同的(albums.user_id=users.user_id
)
我想统计有多少用户获得了超过500张图片.
棘手的部分-用户可以有一个有600张图片的相册,或700张有1张图片的相册。这两个对我们的问题都成立。因此,我们不能简单地计算album_id
或album_img_count
,我们必须以某种方式将它们组合起来。
我想统计有多少用户获得了超过500张图片。
这听起来像聚合。获取用户列表:
select user_id, sum(album_img_count)
from t
group by user_id
having sum(album_img_count) > 500;
然后将其用作子查询:
select count(*)
from (select user_id, sum(album_img_count) as cnt
from t
group by user_id
having sum(album_img_count) > 500
) x;
这样可以吗?
select users.name, sum(album_img_count) as cnt
from albums, users
where users.user_id = albums.user_id
group by user_id
having cnt > 500