Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql ent,我建议删除distinct关键字。+一个是因为你详细解释你的解决方案的方式。是的,你很接近,我也可以在这里找到答案。不过,我想从这里得到的只是查询返回的列表中所有不同组的总数。例如,在上一个返回6行的示例中,有两个不同的组名的userid_Sql_Oracle - Fatal编程技术网

Sql ent,我建议删除distinct关键字。+一个是因为你详细解释你的解决方案的方式。是的,你很接近,我也可以在这里找到答案。不过,我想从这里得到的只是查询返回的列表中所有不同组的总数。例如,在上一个返回6行的示例中,有两个不同的组名的userid

Sql ent,我建议删除distinct关键字。+一个是因为你详细解释你的解决方案的方式。是的,你很接近,我也可以在这里找到答案。不过,我想从这里得到的只是查询返回的列表中所有不同组的总数。例如,在上一个返回6行的示例中,有两个不同的组名的userid,sql,oracle,Sql,Oracle,ent,我建议删除distinct关键字。+一个是因为你详细解释你的解决方案的方式。是的,你很接近,我也可以在这里找到答案。不过,我想从这里得到的只是查询返回的列表中所有不同组的总数。例如,在上一个返回6行的示例中,有两个不同的组名的userid


ent,我建议删除
distinct
关键字。+一个是因为你详细解释你的解决方案的方式。是的,你很接近,我也可以在这里找到答案。不过,我想从这里得到的只是查询返回的列表中所有不同组的总数。例如,在上一个返回6行的示例中,有两个不同的组名的userid<4,因此我预期的查询返回将是计数2。@Kawili wili,好的,在这种情况下,您只需要进行计数。请在答案中查看我的更新。@Polppan谢谢你,伙计+一个是关于你详细解释你的解决方案的方式。是的,你很接近,这也是我可以达到的。不过,我想从这里得到的只是查询返回的列表中所有不同组的总数。例如,在上一个返回6行的示例中,有两个不同的组名的userid<4,因此我预期的查询返回将是计数2。@Kawili wili,好的,在这种情况下,您只需要进行计数。请在答案中查看我的更新。@Polppan谢谢你,伙计!
Table A
| GROUP_NAME | USERID |
| group_A | user1 |
| group_A | user2 |
| group_B | user3 |
| group_A | user4 |
| group_B | user5 |
| group_C | user6 |
| group_B | user7 |
| group_C | user8 |
| group_C | user9 |
| group_A | user10 |
select count(distinct group_name)
from Table_A
group by userid having count(*) < 5;
  select count(distinct group_name) from Table_A  having count(*) < 5;
SQL> CREATE TABLE t
  2      (GROUP_NAME varchar2(7), USERID varchar2(6))
  3  ;

Table created.

SQL>
SQL> INSERT ALL
  2      INTO t (GROUP_NAME, USERID)
  3           VALUES ('group_A', 'user1')
  4      INTO t (GROUP_NAME, USERID)
  5           VALUES ('group_A', 'user2')
  6      INTO t (GROUP_NAME, USERID)
  7           VALUES ('group_B', 'user3')
  8      INTO t (GROUP_NAME, USERID)
  9           VALUES ('group_A', 'user4')
 10      INTO t (GROUP_NAME, USERID)
 11           VALUES ('group_B', 'user5')
 12      INTO t (GROUP_NAME, USERID)
 13           VALUES ('group_C', 'user6')
 14      INTO t (GROUP_NAME, USERID)
 15           VALUES ('group_B', 'user7')
 16      INTO t (GROUP_NAME, USERID)
 17           VALUES ('group_C', 'user8')
 18      INTO t (GROUP_NAME, USERID)
 19           VALUES ('group_C', 'user9')
 20      INTO t (GROUP_NAME, USERID)
 21           VALUES ('group_A', 'user10')
 22  SELECT * FROM dual
 23  ;

10 rows created.

SQL>
SQL> COMMIT;

Commit complete.

SQL>
SQL> SELECT t.*,
  2      COUNT(GROUP_NAME) OVER(PARTITION BY GROUP_NAME ORDER BY GROUP_NAME) cnt
  3    FROM t;

GROUP_N USERID        CNT
------- ------ ----------
group_A user10          4
group_A user2           4
group_A user1           4
group_A user4           4
group_B user3           3
group_B user5           3
group_B user7           3
group_C user8           3
group_C user9           3
group_C user6           3

10 rows selected.

SQL>
SQL> WITH DATA AS
  2    (SELECT t.*,
  3      COUNT(GROUP_NAME) OVER(PARTITION BY GROUP_NAME ORDER BY GROUP_NAME) cnt
  4    FROM t
  5    )
  6  SELECT GROUP_NAME, USERID FROM DATA WHERE cnt < 4;

GROUP_N USERID
------- ------
group_B user3
group_B user5
group_B user7
group_C user8
group_C user9
group_C user6

6 rows selected.

SQL>
SQL> WITH DATA AS
  2    (SELECT t.*,
  3      COUNT(GROUP_NAME) OVER(PARTITION BY GROUP_NAME ORDER BY GROUP_NAME) cnt
  4    FROM t
  5    )
  6  SELECT count(DISTINCT group_name) cnt FROM DATA WHERE cnt < 4;

       CNT
----------
         2

SQL>
select count(1) as nr_of_users, group_name 
  from table_a 
 group by group_name 
having count(1) < 4
select count(1) from (
    select count(1) as nr_of_users, group_name 
      from table_a 
     group by group_name 
    having count(1) < 4
) as a
SELECT group_name,
       COUNT(userid)
  FROM table_a
 GROUP BY group_name
HAVING COUNT(userid) < 5;
SELECT group_name,
       COUNT(DISTINCT userid)
  FROM table_a
 GROUP BY group_name
HAVING COUNT(DISTINCT userid) < 5;
SELECT COUNT(1) 
  FROM (SELECT group_name,
               COUNT(DISTINCT userid)
          FROM table_a
         GROUP BY group_name
        HAVING COUNT(DISTINCT userid) < 5);