mysql - 从每个领域获得总值(value)?

标签 mysql sql database

如何获取每个用户名的是、否、其他字段的总值?

我喜欢添加 Total 字段。

SELECT Username,
  SUM(CASE WHEN type = 'Yes' THEN 1 ELSE NULL END) as Yes,
  SUM(CASE WHEN type = 'No' THEN 1 ELSE NULL END) as No,
  SUM(CASE WHEN type = '' THEN 1 ELSE NULL END) as Other  
  //How to get total of Yes/No/Other
  FROM table 
WHERE source = 'CompanyName' ";

最高的总计也排在最前面。

最佳答案

使用 0 代替 NULL,添加缺少的 group by 并使用 COUNT(*) 获取每个组和顺序的总数结果:

SELECT Username,
  SUM(CASE WHEN type = 'Yes' THEN 1 ELSE 0 END) as Yes,
  SUM(CASE WHEN type = 'No' THEN 1 ELSE 0 END) as No,
  SUM(CASE WHEN type = '' THEN 1 ELSE 0 END) as Other,  
  COUNT(*) as TOTAL
  FROM table 
WHERE source = 'CompanyName'
group by Username
order by TOTAL desc;

这假定 type 只能是"is"、“否”或“”。

关于mysql - 从每个领域获得总值(value)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6187742/

相关文章:

Php删除语法

java - 在命名空间 (, ) 中找到多个表 - SchemaExtractionException

database - 社交整合平台(facebook、twitter、openid)id 的数据类型是什么?

MySQL 只获取具有最高查询 ID 的行

php - 奇怪的 UTF-8 MAMP 问题

mysql - 数据库结构 - 属于多个团队的用户

sql - group by 子句中列的顺序重要吗?

sql - 为什么表的顺序在自连接中很重要

sql - AWS Redshift 列限制?

sql-server - NLog 数据库目标和 SQL Server 应用程序角色