sql 中的两项计数,但在不同的列中

Two counts in sql but in separate columns

我想在一个 sql 语句中进行两次计数。

SELECT COUNT(UserID) AS STAFF
FROM User_Role
WHERE(RoleID <> 1)

UNION

SELECT COUNT(UserID) AS STUDENTS
FROM User_Role AS User_Role_1
WHERE (RoleID = 1)

以上代码有效但输出如下:

Staff

7

6

不过我也希望它在单独的列中输出,例如:

Staff   Students
7          6

只使用条件聚合。

SELECT sum(case when roleid<>1 then 1 else 0 end) AS STAFF,
       sum(case when roleid=1 then 1 else 0 end) AS STUDENTS
FROM User_Role

在 MySQL 中,您只需添加布尔表达式即可完成此操作:

SELECT SUM(RoleID <> 1) as STAFF, SUM(RoleID = 1) as Students
FROM User_Role;

这恰好是我喜欢的 MySQL 的扩展——许多语言在数字上下文中将布尔值视为整数。