mysql - MySQL 中所有行的计数总和 (*)

标签 mysql sql database rdbms

我被 sum() 查询困住了,我想要所有行中 count(*) 值的总和 group by .

这里是查询:

select
    u.user_type as user,
    u.count,
    sum(u.count)
FROM
(
select 
    DISTINCT
    user_type,
    count(*) as count
FROM
    users
where
    (user_type = "driver" OR user_type = "passenger")
GROUP BY
    user_type
) u;

当前输出:

----------------------------------
|  user     |  count     |  sum  |
----------------------------------
| driver    | 58         |  90   |
----------------------------------

预期输出:

----------------------------------
|  user     |  count     |  sum  |
----------------------------------
| driver    | 58         |  90   |
| passenger | 32         |  90   |
----------------------------------

如果我从查询中删除 sum(u.count),则输出如下所示:

--------------------------
|  user     |  count     |
--------------------------
| driver    | 58         |
| passenger | 32         |
--------------------------

最佳答案

你需要一个子查询:

   SELECT user_type, 
          Count(*) AS count,
          (SELECT COUNT(*) 
           FROM users 
           WHERE user_type IN ("driver","passenger" )) as sum  
   FROM   users 
   WHERE  user_type IN ("driver","passenger" ) 
   GROUP  BY user_type ; 

注意这里不需要distinct

   SELECT user_type, 
          Count(*) AS count,
          c.sum
   FROM   users 
   CROSS JOIN ( 
           SELECT COUNT(*) as sum
           FROM users 
           WHERE user_type IN ("driver","passenger" )
         ) as c

   WHERE  user_type IN ("driver","passenger" ) 
   GROUP  BY user_type ; 

关于mysql - MySQL 中所有行的计数总和 (*),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56557593/

相关文章:

sql - BigQuery SQL,将 SQL 查询结果追加到现有表中

database - 将两个数据库查询放在一起

PHP如何在一个select语句中查询3张表所需的信息

sql - 按名称查找所有数据库对象?

php - 需要 PHP 和 MySQL 保存游戏进度的反馈

sql - 如何将逗号分隔列表与值匹配?

sql - 如何在 sql server 2016 中更改 JSON 列名

php - Laravel Eloquent updateOrCreate 使用预填充模型

php - 将 2 个查询合并为 1 个

WHILE 语句中的 MySQL 语法错误