从 mysql 表中的同一列获取计数?
Posted
技术标签:
【中文标题】从 mysql 表中的同一列获取计数?【英文标题】:getting count from the same column in a mysql table? 【发布时间】:2012-08-12 18:29:15 【问题描述】:我想对不同值的相同字段进行计数,例如:
用户user_id, 性别
性别可以有明显的男性或女性:)
我想计算所有男性和女性的数量,即
COUNT(male) COUNT(female)
4 16
但我很困惑,因为它们来自同一个gender coloumn
谢谢
【问题讨论】:
您希望结果在同一列(两行)还是两列(一行)? 好问题,我希望他们分成 3 行,包括总用户数、男性人数和女性人数 【参考方案1】:试试这个以获得逐行结果:
SELECT gender, COUNT(User_id) AS count
FROM User
GROUP BY gender;
输出:
| gender | count |
|--------|-------|
| F | 4 |
| M | 2 |
试试这个以获得总计的逐行结果:
SELECT (IFNull(gender,'Total')) AS gender,
COUNT(User_id) AS Count
FROM User
GROUP BY gender
WITH rollup;
输出:
| gender | Count |
|--------|-------|
| F | 4 |
| M | 2 |
| Total | 6 |
试试这个列的结果:
SELECT
COUNT(CASE WHEN gender = 'M' THEN User_id END) AS males,
COUNT(CASE WHEN gender = 'F' THEN User_id END) AS females,
COUNT(*) AS Total
FROM User;
输出:
| males | females | Total |
|-------|---------|-------|
| 2 | 4 | 6 |
See this SQLFiddle
【讨论】:
【参考方案2】:试试这个: 总计数:
Select gender,count(*) as count
From User
Group by gender
with rollup
SQl Fiddle demo
【讨论】:
【参考方案3】:根据您的评论,您希望计算男性、女性和总人数:
SELECT sum(case when gender = 'M' then 1 else 0 end) males,
sum(case when gender = 'F' then 1 else 0 end) females,
count(*) total
FROM yourTable
见SQL Fiddle with Demo
【讨论】:
【参考方案4】:试试这个查询 -
SELECT
COUNT(IF(gender = 'M', User_id, NULL) males,
COUNT(IF(gender = 'F', User_id, NULL) females
FROM
User
【讨论】:
以上是关于从 mysql 表中的同一列获取计数?的主要内容,如果未能解决你的问题,请参考以下文章
从 Laravel 中的 Mysql Pivot 表中获取列并返回 JSON 对象