mysql - 对所有值进行计数并使用 count 进行分组

标签 mysql sql

我有这个查询

SELECT poll_numbers.number_title as totale_stemmen,  
       count(poll_stemmen.number_id) as stem 
FROM poll_stemmen
LEFT JOIN poll_numbers on number_id = poll_numbers.id
group by poll_stemmen.number_id

输出如下:

totale_stemmen stem    
name             1    
another          1

但是我怎样才能计算出茎的总数呢?在这个结果中它将是 2。

这是表格布局:

poll_stemmen    
number_id, id

poll_numbers
id, number_title

示例数据:

id, number_id
1   2
2   8
3   8
4   8

id, number_title
2   title_1
8   title_2

expected output:
number_title, count_number, total_number
title_1       1             4
title_2       3             4

最佳答案

在大多数数据库中,您只需使用窗口函数。但是,MySQL 不支持这一点。

一种方法是在 from 子句或 select 中使用子查询:

SELECT n.number_title, count(s.number_id) as stem,
       x.total_number
FROM poll_stemmen s LEFT JOIN
     poll_numbers n
     on s.number_id = n.id CROSS JOIN
     (SELECT count(*) as total_number FROM poll_stemmen) x
group by s.number_id;

将查询放在 from 子句中的一个优点是您知道它只会执行一次。

关于mysql - 对所有值进行计数并使用 count 进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30777961/

相关文章:

PHP PDO 准备语句语法问题

mysql - SQL CE 中的条件查询,其中列具有 NULL 值

MySQL 存储过程 SELECT var INSERT 后值错误

mysql - 计算没有零的数字

sql - 优化类似 mysql 的查询

c# - 带分组依据和字符串变量的 LINQ 动态查询

mysql - 如何在 phpMyAdmin 中查看我的存储过程?

sql - 在表中插入多行

mysql - 我可以在sql查询中使用临时值吗

java - 如何与mysql中其他行插入的数据形成代码字符串