要获取不同的值并计算它们,可以使用GROUP BY子句。
语法如下
select yourColumnName,count(*) as anyAliasName from yourTableName group by yourColumnName;
为了理解上述语法,让我们创建一个表。创建表的查询如下
mysql> create table GroupByAndCountDemo -> ( -> ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> ClientName varchar(100) -> );
使用insert命令在表中插入一些记录。查询如下-
mysql> insert into GroupByAndCountDemo(ClientName) values('John'); mysql> insert into GroupByAndCountDemo(ClientName) values('Carol'); mysql> insert into GroupByAndCountDemo(ClientName) values('Sam'); mysql> insert into GroupByAndCountDemo(ClientName) values('Sam'); mysql> insert into GroupByAndCountDemo(ClientName) values('John'); mysql> insert into GroupByAndCountDemo(ClientName) values('John'); mysql> insert into GroupByAndCountDemo(ClientName) values('John'); mysql> insert into GroupByAndCountDemo(ClientName) values('Sam'); mysql> insert into GroupByAndCountDemo(ClientName) values('Sam'); mysql> insert into GroupByAndCountDemo(ClientName) values('Sam'); mysql> insert into GroupByAndCountDemo(ClientName) values('John'); mysql> insert into GroupByAndCountDemo(ClientName) values('John'); mysql> insert into GroupByAndCountDemo(ClientName) values('John'); mysql> insert into GroupByAndCountDemo(ClientName) values('David'); mysql> insert into GroupByAndCountDemo(ClientName) values('Maxwell'); mysql> insert into GroupByAndCountDemo(ClientName) values('Maxwell');
使用select语句显示表中的所有记录。查询如下-
mysql> select *from GroupByAndCountDemo;
输出如下
+----------+------------+ | ClientId | ClientName | +----------+------------+ | 1 | John | | 2 | Carol | | 3 | Sam | | 4 | Sam | | 5 | John | | 6 | John | | 7 | John | | 8 | Sam | | 9 | Sam | | 10 | Sam | | 11 | John | | 12 | John | | 13 | John | | 14 | David | | 15 | Maxwell | | 16 | Maxwell | +----------+------------+ 16 rows in set (0.00 sec)
现在,让我们获取不同的值并使用以下查询对它们进行计数
mysql> select ClientName,count(*) as TotalCount from GroupByAndCountDemo group by ClientName;
以下是输出
+------------+------------+ | ClientName | TotalCount | +------------+------------+ | John | 7 | | Carol | 1 | | Sam | 5 | | David | 1 | | Maxwell | 2 | +------------+------------+ 5 rows in set (0.00 sec)
问题内容: 表格Jobs有2列JobId,保存工作位置时的城市可能是多个城市,如下所示 我想如何在类似城市的城市中计算Jobid想要在纽约市中计算Jobid的结果 纽约3俄亥俄州1弗吉尼亚2 问题答案: 为了获得用逗号分隔的不同值的计数,可以在查询之上运行,但是要获得正确的结果,您应该再使用一个表,该表只有一个列num整数类型,并插入一些值。如果在此情况下在GROUP_CONCAT(城市分隔符’,
问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 4年前关闭。 改善这个问题 我有一个表user_places像这样: 我正在尝试获取用户的最新recorded_date和他最常访问的地点的名称。 问题答案: 如果数据不是太大,则可以在MySQL中使用此技巧:
我试图在Grafana中创建一个表格/图表,显示在给定时间范围内(例如过去24小时)登录到给定应用程序的唯一用户总数。我有一个指标,,它记录每分钟命中特定路径的请求数量: 这给了我以下信息: 现在我想计算唯一用户名的数量,因此我运行: 我得到: 我错过了什么/我做错了什么?理想情况下,我希望获得一个标量值,该值显示在过去24小时内登录的唯一用户名的总数。 非常感谢。
问题内容: 我想对同一字段进行计数以获得不同的值,例如: 用户{user_id,性别} 性别显然可以是男性或女性:) 我想获得所有男性和女性的计数,即 但我很困惑,因为他们来自同样的感谢 问题答案: 尝试以下操作以获得明智的结果: 输出: 尝试以下操作以获得总计的行明智结果: 输出: 尝试此操作以获得列明智的结果: 输出: 看到这个SQLFiddle
问题内容: 我有一个名为“ posts”的SQL表,如下所示: 每个类别编号对应一个类别。我将如何计算每个类别在 一个sql查询中 全部出现在帖子中的次数? 例如,这样的查询可能返回如下符号数组: 我当前的方法是对每个可能的类别使用查询,例如:,然后将返回值组合到最终数组中。但是,我正在寻找一种仅使用一个查询的解决方案。 问题答案:
问题内容: 比较mysql中逗号分隔的值,并在countcolumn中获取匹配的输出 例子: 通过比较ID 1和2,输出应为1 通过比较ID 2和3,输出应为1 通过比较ID 3和1,输出应为2 问题答案: 首先,您列出的数据实际上应该以一种格式存储,数据库的每一行都存储一个和一个,即3元素列表将对应3行。如果对您的结构进行了更改,则以下答案将是有意义的。 就目前而言,这是我整合的一个不错的MyS