mysql - 分组依据 - 具有不同的结果,包括。数数

标签 mysql count group-by distinct

关于mysql中“group by”语句的简短问题:

我当前的数据库结构如下所示:

CREATE TABLE TableName 
    (
     ID int primary key, 
     name varchar(255),
     number varchar(255)
    );

INSERT INTO TableName
(ID, name, number)
VALUES
    (1, "Test 1", "100000"),
    (2, "Apple", "200000"),
    (3, "Test 1 beta", "100000"),
    (4, "BLA", "300000"),
    (5, "ABU", "400000"),
    (6, "CBA", "700000"),
    (7, "ABC", "600000"),
    (8, "Orange - Test", "400000"),
    (9, "ABC", "");

我当前的声明如下:

SELECT name, number, count(*) as Anzahl 
FROM TableName 
group by name,number

使用此语句,结果如下所示:

NAME            NUMBER      ANZAHL
ABC                     1
Test 1          100000      2
Apple           200000      1
BLA             300000      1
ABU             400000      2
ABC             600000      1
CBA             700000      1

但是值“ABC”不会合并。

结果应该是这样的:

NAME            NUMBER      ANZAHL
Test 1          100000      2
Apple           200000      1
BLA             300000      1
ABU             400000      2
ABC             600000      2
CBA             700000      1

有什么想法吗?

SQLFiddle: http://sqlfiddle.com/#!2/dcbee/1

该解决方案必须对于 +1 000 000 行之类的内容具有高性能

最佳答案

首先,恕我直言,将数字存储到字符列中是一个糟糕的设计。使用整数比使用字符更快。话虽这么说,我假设名称列中的所有值都是数字。这是一个避免多个 ABC 值的查询

SELECT name, 
       SUM(convert(number, SIGNED INTEGER)) as number, 
       count(*) as Anzahl 
FROM TableName 
GROUP BY name ;

关于mysql - 分组依据 - 具有不同的结果,包括。数数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19524597/

相关文章:

php - 如何通过php动态抓取mysql字段

MySQL - 插入带有 AUTO_INCREMENT 列的 xxx SELECT

mysql - 不是单组组函数oracle sum 与子查询sum

php - JIT 为组织结构图构建功能性 json

c# - 分组时如何从 Linq 查询返回 IGrouping

mysql - 如果任何值为 NULL,GROUP_CONCAT 返回 NULL

mysql - 如何在 MySQL 中正确使用 group by <<colName>>?

javascript - 如何使用文本框计算字符串中字符出现的次数?

mysql - 获取列数 MySQL

mysql - 您将如何处理不同年份的按周分组?