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 的扩展——许多语言在数字上下文中将布尔值视为整数。
我想在一个 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 的扩展——许多语言在数字上下文中将布尔值视为整数。