Mysql:按符号分组但保留所有顶部目标值行

标签 mysql

下面的数据只是我原始数据的摘要,由四个表的“连接”形成。要求是;

data :
 symbol  target  analyst
    a       1690    peas
    a       1230    tomato
    a       1235    papaya
    a       1230    papaya
    a       1690    apple 
    b       1450    bean
    b       1914    potato
    b       1540    tomato
    b       1797    papaya
    b       1880    apple 
    b       2000    turnips
    c       1550    bean
    c       1588    onion
    c       1588    onion
    c       1588    potato
    c       1463    soya
    c       1130    tomato    
   required :
   symbol  target  analyst
      a         1690     peas
      a         1690     apple 
      b         2000     turnips
      c         1588     onion
      c         1588     potato

即对于表中的每个交易品种,必须显示每个唯一分析师的 max(target) 行。 尝试使用 'max(target)' 和 'group by symbol' 的组合,它仅显示一个最大目标行。 用于形成数据的代码的一部分是;

SELECT 
     a.symbol, c.target, c.analyst 
FROM table1 a
     LEFT JOIN table2 b 
         ON a.symbol = b.symbol 
     LEFT JOIN table3 c 
         ON a.symbol LIKE CONCAT('%', c.symbol , '%')
     LEFT JOIN table4 d 
         ON a.symbol = d.symbol;

最佳答案

要获得所需的输出,您可以进行自连接

select distinct a.*
from demo a 
left join demo b on a.symbol = b.symbol
                 and a.target < b.target
where b.symbol is null

Demo

关于Mysql:按符号分组但保留所有顶部目标值行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47526229/

相关文章:

php - 你好,我正在尝试打印从 mysql 时间戳发布以来耗时

mysql - MySQL 用于联锁操作安全吗?

mysql - 适用于 Mac 的 SQL 编辑器/查看器

mysql - 允许在 mysql 的 where 子句中重复

mySQL 查询日期,其中选择

mysql - 如何将数据库中的数据插入数组并检查

mysql - 当日期列为空时,strtotime 返回 1970 年的日期

mysql - 帮助我将 give ms access 查询转换为 MySQL 查询?

sql - 在 MySQL 中删除一行

sql - 如何从这种关系中选择条目?