SQL:如何计算有多少用户从两个不同的表中获得了超过500个图像
我对SQL很陌生。我正在尝试进行一个简单的连接查询 为此,我有两张桌子:SQL:如何计算有多少用户从两个不同的表中获得了超过500个图像,sql,join,mariadb,Sql,Join,Mariadb,我对SQL很陌生。我正在尝试进行一个简单的连接查询 为此,我有两张桌子: 第一个表相册,列名为相册id,用户id*和相册img\u计数(相册img\u计数-列显示相册中有多少图像) 第二个表是用户,列名称为用户id* *user\u id对于两个表都是相同的(albums.user\u id=users.user\u id) 我想统计一下总共有多少用户获得了超过500张图像 棘手的部分-用户可以有一个带有600个图像的相册,或者700个带有一个图像的相册。这两种方法都适用于我们的查询。因此,
相册
,列名为相册id
,用户id
*和相册img\u计数
(相册img\u计数
-列显示相册中有多少图像)
用户
,列名称为用户id
*
user\u id
对于两个表都是相同的(albums.user\u id=users.user\u id
)
我想统计一下总共有多少用户获得了超过500张图像
棘手的部分-用户可以有一个带有600个图像的相册,或者700个带有一个图像的相册。这两种方法都适用于我们的查询。因此,我们不能简单地计算相册id或相册img计数,我们必须以某种方式将它们结合起来
我想统计一下有多少用户总共获得了超过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
谢谢你,先生。它几乎成功了(除了我手动将
users.name
更改为users.user\u id
(也许你可以编辑你的答案)。它给了我一个user\u id
列,旁边是列表格式的cnt
计数。但是,我只想知道一个数字,有多少用户获得了超过500张图像。例如,答案是7468个用户。我假设users
表中的信息比id更多。如果所有这些都是user\u id
则您不需要加入,因为该信息已在album\u img\u count
中提供。如果您只需要最终的总计数,则@GordonLinoff的答案中的子选择查询是正确的。您假设正确。我确实在users
表中有更多信息,为了简化起见,我将没有向查询添加其他属性。因此,我确实需要“加入”。这就是为什么我问如何使用您的SQL示例获得答案。关于“有多少用户获得了超过500张图像”的答案。这就是为什么@Gordon Linoff answer对我不起作用。有没有解决我的问题的技巧?谢谢您的回答,但它没有“加入”查询。我需要使用“join”,因为我将从我的用户
表中添加额外的参数,而不仅仅是用户。user\u id
@En0w1na…这回答了你问的问题。如果你有不同的问题,然后问一个新问题。哈?也许我很愚蠢,但你把我弄糊涂了。在我写的问题中“我正在尝试做一个简单的连接查询”,你提供了一个没有“连接”的答案。但是你说答案是正确的。它是正确的,但是它没有“连接”。我缺少什么吗?O_O