mysql - 单个 sql 中有多个 count* sql

标签 mysql sql-server

我想将这些 sql 语句用作单个语句,这将导致具有不同计数和 company_id 的 4 列。

select company_id,count(*) as det from feedbacks a join( select id,company_id from users  ) b on a.user_id = b.id where healthi_rating < 7 group by company_id
select company_id,count(*) as neu from feedbacks a join( select id,company_id from users  ) b on a.user_id = b.id where healthi_rating <9 && healthi_rating >=7 group by company_id
select company_id,count(*) as pro from feedbacks a join( select id,company_id from users  ) b on a.user_id = b.id where healthi_rating >=9 group by company_id

谁能告诉我怎么做。

最佳答案

对于 MySQL 做

select company_id,
       sum(healthi_rating < 7) as det,
       sum(healthi_rating between 7 and 8) as neu,
       sum(healthi_rating >= 9) as pro
from feedbacks a 
join( select id, company_id from users ) b on a.user_id = b.id 
group by company_id

并使用 ANSI SQL 标准且没有 users 的子查询

select b.company_id,
       sum(case when healthi_rating < 7 then 1 else 0 end) as det,
       sum(case when healthi_rating between 7 and 8 then 1 else 0 end) as neu,
       sum(case when healthi_rating >=9 then 1 else 0 end) as pro
from feedbacks a 
join users b on a.user_id = b.id 
group by b.company_id

关于mysql - 单个 sql 中有多个 count* sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28216715/

相关文章:

sql-server - SQL Server 删除表错误

node.js - Sequelize Tedious 从十进制中去除 0

php - 如何在mysql中维护当前和以前的记录

mysql - 如何在 SQL 的数学运算符中使用别名?

asp.net - 普通与云/Azure 托管以及 SQL Azure 与 SQL Server 的角色

SQL如何截断字符串

bash - 尝试将 mysqldump 到远程服务器上的 csv 时无法创建文件

MySQL注入(inject)攻击: Proof of concept

mysql - 如何使用 Mysql 命令提示符连接到 Live 数据库 (Mysql)?

sql - sys.sql_dependency 目录 View 未更新会产生什么后果