如何从Oracle中的表中计算不同的值
我的表格结构如下:如何从Oracle中的表中计算不同的值,oracle,oracle11g,Oracle,Oracle11g,我的表格结构如下: ID USER STATE --- --- --- 1 U1 CA 2 U1 VA 3 U2 CT 4 U3 AZ 5 U2
ID USER STATE
--- --- ---
1 U1 CA
2 U1 VA
3 U2 CT
4 U3 AZ
5 U2 CT
该查询将获取所有用户并统计他们访问过的州,并打印访问超过或等于1个州的用户
我正在尝试基本上进行查询,以获得以下输出:
U1 2
关于如何构造此查询,您有什么想法吗
我已经尝试了以下方法,但我一直都在坚持
SELECT DISTINCT(USER)
FROM (SELECT DISTINCT(STATE) AS ST , USER
FROM TEMP_TABLE)
WHERE count(STATE) > 1;
这就是HAVING子句的目的:过滤聚合上的数据
SELECT user
,COUNT(DISTINCT state)
FROM temp_table
GROUP BY user
HAVING COUNT(DISTINCT state) > 1;
如果HAVING子句让您感到不舒服,那么您可以如您所示进行嵌套查询,只需稍加调整
SELECT user
FROM (SELECT user
,COUNT(DISTINCT state) AS state_cnt
FROM temp_table
GROUP BY user) t
WHERE state_cnt > 1;
在任何一种情况下,您都可以按用户分组并计算状态,以获得“每个用户的状态”的答案。@KenWhite-我在第一篇帖子后编辑了我的问题,您的评论收到了。我理解你提到的那些观点。我已经做了必要的编辑(你在我编辑的时候抓到了)