MySQL 选择为

标签 mysql sql

是否有办法实现以下目标?

以下查询仅用于传达意图。我确实理解它在语法上不正确。

SELECT 
        T_DATE,
        T_NAME,
        (SELECT MAX(DUR) WHERE STATUS = 'Y') AS UPD_MAX,
        (SELECT AVG(DUR) WHERE STATUS = 'Y') AS UPD_AVG,
        (SELECT MAX(DUR) WHERE STATUS = 'N') AS READ_MAX,
        (SELECT AVG(DUR) WHERE STATUS = 'N') AS READ_AVG
FROM
         TABLE_1
WHERE
         T_NAME LIKE 'ab%cd%'
GROUP BY 
         T_DATE,
         T_NAME

最佳答案

使用条件聚合:

SELECT T_DATE, T_NAME,
       MAX(CASE WHEN STATUS = 'Y' THEN DUR END)  AS UPD_MAX,
       AVG(CASE WHEN STATUS = 'Y' THEN DUR END)  AS UPD_AVG,
       MAX(CASE WHEN STATUS = 'N' THEN DUR END)  AS READ_MAX,
       AVG(CASE WHEN STATUS = 'N' THEN DUR END)  AS READ_AVG
FROM TABLE_1
WHERE T_NAME LIKE 'ab%cd%'
GROUP BY T_DATE, T_NAME;

关于MySQL 选择为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31270071/

相关文章:

sql - 我需要对 TSQL 了解多深才能完全掌握 Entity Framework 中的所有内容?

Php/MySQL 帮助 - 每日随机选择?

mysql if inside select with aggregate functions

php - 从两个相关表中批量删除性能

c# - MVC 4 - 报告服务和存储过程

sql - 在SQLite中合并具有关系的多个数据库

php - 需要帮助从数据库(PHP)中仅显示每个用户的一个结果

今天的 mySQL 行不会持续 24 小时

MySQL语法检查

java - 准备好的语句从数据库填充列表