Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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 计数的数据库查询_Sql_Group By - Fatal编程技术网

Sql 计数的数据库查询

Sql 计数的数据库查询,sql,group-by,Sql,Group By,我有一张桌子 ID | NAME | DEPT 1 | A | D-1 2 | B | D-1 3 | C | D-2 4 | D | D-3 5 | E | D-1 6 | F | D-3 7 | G | D-4 现在我想得到这样的结果 DEPT | COUNT(DEPT) D-1 | 3

我有一张桌子

ID  |   NAME    |   DEPT
1   |   A       |   D-1
2   |   B       |   D-1
3   |   C       |   D-2
4   |   D       |   D-3
5   |   E       |   D-1
6   |   F       |   D-3
7   |   G       |   D-4
现在我想得到这样的结果

DEPT    |   COUNT(DEPT)
D-1     |   3
OTHERS  |   4
有人能帮我写这个查询吗?

您需要使用CASE按D-1和其他人对数据进行分组:


请参见

我猜您需要最大发生部门和计数,其他部门和剩余部门发生的总和

你可以像下面这样做-

Select dept, count(*) cnt  
  from Table_name
 group by dept
having count(*) = ( select max(count(*)) from table_name group by dept)
union
select 'Other' dept, count(*) cnt 
  from table_name 
 where dept not in ( select dept 
                       from table_name 
                      group by dept 
                     having count(*) = ( select max(count(*)) 
                                           from table_name 
                                          group by dept
                                        )
                   )
我希望这就是你要找的

SELECT 
     DEPT,
     COUNT (DEPT)AS [COUNT(DEPT)]
FROM(SELECT 
          (CASE DEPT WHEN 'D-1' THEN 'D-1' ELSE 'OTHERS' END) AS DEPT FROM test1) AS tbl
GROUP BY DEPT

请尝试上面的sql查询。

我们这里不为您编写代码。你尝试了什么?对于那些不支持/不支持的选民来说,SQL标签目前尤其令人讨厌:这是为谁设计的DBMS?Gr8。。。。它起作用了。谢谢
SELECT 
     DEPT,
     COUNT (DEPT)AS [COUNT(DEPT)]
FROM(SELECT 
          (CASE DEPT WHEN 'D-1' THEN 'D-1' ELSE 'OTHERS' END) AS DEPT FROM test1) AS tbl
GROUP BY DEPT