对于保存用户网页访问行为记录的表,如何选择访问多个网页的用户。
该表的结构为:
userId webpageId visitTime
0 123 ...
0 124 ...
1 123 ...
... ... ...
我可以使用以下方法计数:
SELECT userId, COUNT(DISTINCT webpageId) AS count FROM visits GROUP BY userId;
它给我的结果是:
userId count
0 2
1 1
2 6
... ...
我该如何执行查询,使我得到最终结果,例如:
userId
0
2
...
每个都是访问多个DISTINCT网页的用户
只需添加having子句
SELECT userId, COUNT(DISTINCT webpageId) AS count
FROM visits
GROUP BY userId
HAVING COUNT(DISTINCT webpageId) > 1
但是如果你只是 ID
SELECT userId
FROM visits
GROUP BY userId
HAVING COUNT(DISTINCT webpageId) > 1
之所以筛选onHAVING
子句而不是onWHERE
的原因是因为,WHERE
子句不能支持 聚集了的 列。
问题内容: 我正在尝试选择mysql表中的重复行,它对我来说很好,但问题是它不是让我选择该查询中的所有字段,而是让我选择用作不同的字段名,让我写查询更好的了解 第一个工作正常 现在,当我尝试选择所有字段时,我最终会出现错误 我正在尝试选择最新的重复项,比如说ticket_id 127是行ID 7、8、9的3倍,因此我想选择一次,最新条目在这种情况下为9,这适用于所有其余项ticket_id的 任何
问题内容: 在我有一个像这样的表的情况下: 我只想为每个工作人员(用staff_id表示)选择一个记录,列出他们的主要技能,用mainskill中的(1)表示。如果没有主要技能,我想退还该工作人员的任何技能记录。例如: 查询应返回: 我尝试了分组,DISTINCT等的各种组合,但无法获得我想要的输出。任何帮助表示赞赏。 问题答案: SQL Server 2005+,使用CTE: SQL Serve
问题内容: 这里完全没有想法,可能需要一个简单的解决方案。 基本上我想要的查询是: 我只想选择ID为3和4的行,或者命名为“ andy”和“ paul” 非常感谢您的回答 问题答案: 尝试: 或等效的:
问题内容: 好的,这是我的难题,我建立了一个数据库,其中包含约5个表,所有表的数据结构完全相同。出于本地化的目的,以这种方式分离了数据,并总共分割了约450万条记录。 在大多数情况下,只需要一张桌子就可以了。但是,有时需要两个或多个表中的数据,并且需要按用户定义的列对数据进行排序。这就是我遇到的问题。 数据列: MySQL陈述: MySQL吐出这个错误: 显然,我做错了。有人愿意为我阐明一下吗?
问题内容: 所以这是我的设置,我有2个具有以下(简化)模式的旧表和新表 我正在寻找一种SQL查询,该查询返回以下内容,但在1个查询中包含4列,而不是每个2列包含2个查询 因此,我理想的结果集将包含4列: 谢谢! 问题答案: 您是否尝试过JOIN语句:
问题内容: 这是我的表结构- 我想清楚地选择所有的数据(以及日期)。由于日期在两个相同的条目之间会有所不同,因此我想选择日期最近的行。我希望得到这样的结果- 我不想要这个- 我正在使用此查询- 但是它只能挑一排。我该如何纠正? 问题答案: 试试这个查询 如果只想使用此查询: SQL字段 如果要查找所有用户的最新日期,请使用此查询 在此查询中,还将包含的数据