mysql在选择和平均后重命名列值

标签 mysql

在我当前的表中,我试图根据 comp_name 获取列的平均值,下面是输出

    "Comp_Name"         "No_of_Rows"    "Column1_Avg"   "Column2_Avg"   "Column3_Avg"
    "Company1 Pty Ltd"  "291"           "39"            "60"            "0"
    "Company1 Pty."     "1699"          "23"            "76"            "0"
    "Company2 Ltd"      14335"          "6"             "82"            "10"
    "Company2 "         "4335"          "60"            "8"             "2"
    "Company3 Pty Ltd"  "767"           "22"            "77"            "0"
    "Company3"          "1628"          "16"            "82"            "1"

是否可以平均“Company1 Pty Ltd”和“Company1 Pty”。 (以及其他公司)但添加行数?

我的选择查询如下,基本上是根据某个值计算平均值,并根据表中可用的公司名称进行分组

    SELECT Comp_Name,count(*) as No_of_Rows,
    CAST(   (COUNT(CASE WHEN Column1 < 500 then 1 else NULL end)/COUNT(mytable.ID)) * 100 AS CHAR(2))+'%' as Column1_Avg,
    CAST(   (COUNT(CASE WHEN (Column1 < 30000 AND Column1 > 500) then 1 else NULL end)/COUNT(mytable.ID)) * 100 AS CHAR(2))+'%' as Column2_Avg,
    CAST(   (COUNT(CASE WHEN (Column1 > 30000)  then 1 else NULL end)/COUNT(mytable.ID)) * 100 AS CHAR(2))+'%' as Column3_Avg
    FROM mytable
    GROUP BY Comp_Name desc

预期输出:

    "Comp_Name"         "No_of_Rows"    "Column1_Avg"   "Column2_Avg"   "Column3_Avg"
    "Company1"          "1990"          "31"            "68"            "0"
    "Company2"          "18670"         ".."            ".."            "6"
    "Company3"          "2395"          ".."            ".."            ".."

我可以使用某种带有 company_name 及其替换列表的引用表吗?

最佳答案

如果您只想获取 GROUP BY 子句中的第一个单词,您可以使用:

GROUP BY CASE LOCATE(' ', Comp_Name) WHEN 0 THEN Comp_Name ELSE LEFT(Comp_Name, LOCATE(' ', Comp_Name)) END

然后,如果你想构建一个引用表,像这样的查询应该没问题:

SELECT DISTINCT Comp_Name, CASE LOCATE(' ', Comp_Name) WHEN 0 THEN Comp_Name ELSE LEFT(Comp_Name, LOCATE(' ', Comp_Name)) END AS Simple_Comp_Name
FROM mytable
ORDER BY Simple_Comp_Name

关于mysql在选择和平均后重命名列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10646521/

相关文章:

java - 使用 Java 实现电子邮件队列

php - 从 CSV 文件在 Joomla 2.5 中添加用户并通知他们注册电子邮件

php - pdo变量在mysql函数中未定义

mysql - 如何修复这个简单的 MySQL 查询

php - 从 mysql 查询返回额外的项目

更新数据库中的表时出现 MySQLTransactionRollbackException

mysql - 如何在 Zend Framework2 中使用 MySql 的方法 DATE_ADD、DATE_FORMAT

mysql - Count If MySql 具有不同

mysql - 触发将空值更改为 NULL

mysql - Oracle - 尝试在同一查询中查询两个表中的数据