【问题标题】:How To Count Higher High OREDR BY DATE MYSQL Table如何计算更高的 ORDER BY DATE MYSQL 表
【发布时间】:2022-01-05 19:40:04
【问题描述】:

我正在进行一个项目,我需要根据时间计算更高的高点。下面提到一个示例表的示例

SYMBOL  CLOSE   DayNo   YearNo  Rank_No
TCS     2940     1        2021     8
TCS     3050.75  2        2021     7
TCS     3114.25  3        2021     4
TCS     3113.5   4        2021     5
TCS     3080.85  5        2021     6
TCS     3128     6        2021     3
TCS     3230     7        2021     1
TCS     3210     8        2021     2

在上面的示例表中,Rank_No 列显示了在提到的日期之间达到的最高价格。现在我想计算下每一行的排名是否低于之前的所有行,或者每一行在所有行之上都是最小值。喜欢

SYMBOL  Close     DayNo   YearNo  Rank_No  Count
TCS     2940        1      2021     8       NO
TCS     3050.75     2      2021     7       YES
TCS     3114.25     3      2021     4       YES
TCS     3113.5      4      2021     5       NO
TCS     3080.85     5      2021     6       NO
TCS     3128        6      2021     3       YES
TCS     3230        7      2021     1       YES
TCS     3210        8      2021     2       NO

所以每次收盘价都高于过去几天。应该算是的。

我们将非常感谢您的支持...谢谢您

【问题讨论】:

    标签: mysql mysql-workbench


    【解决方案1】:

    在 MySQL 8.x 中,您可以为此使用 Winwo 函数 LAG

    CREATE TABLE tradesorder (
      `SYMBOL` VARCHAR(3),
      `CLOSE` FLOAT,
      `DayNo` INTEGER,
      `YearNo` INTEGER,
      `Rank_No` INTEGER
    );
    
    INSERT INTO tradesorder
      (`SYMBOL`, `CLOSE`, `DayNo`, `YearNo`, `Rank_No`)
    VALUES
      ('TCS', '2940', '1', '2021', '8'),
      ('TCS', '3050.75', '2', '2021', '7'),
      ('TCS', '3114.25', '3', '2021', '4'),
      ('TCS', '3113.5', '4', '2021', '5'),
      ('TCS', '3080.85', '5', '2021', '6'),
      ('TCS', '3128', '6', '2021', '3'),
      ('TCS', '3230', '7', '2021', '1'),
      ('TCS', '3210', '8', '2021', '2');
    
    SELECT 
    `SYMBOL`, `CLOSE`, `DayNo`, `YearNo`, `Rank_No`,
    IF(`CLOSE` > LAG(`CLOSE`)  OVER (PARTITION BY `SYMBOL` ORDER BY  `YearNo` ASC,`DayNo`), 'YES','NO') as `Count`
    FROM tradesorder
    
    符号 |关闭 |天号 |年号 | Rank_No |数数 :----- | ------: | ----: | -----: | ------: | :---- TCS | 2940 | 1 | 2021 | 8 |不 TCS | 3050.75 | 2 | 2021 | 7 |是的 TCS | 3114.25 | 3 | 2021 | 4 |是的 TCS | 3113.5 | 4 | 2021 | 5 |不 TCS | 3080.85 | 5 | 2021 | 6 |不 TCS | 3128 | 6 | 2021 | 3 |是的 TCS | 3230 | 7 | 2021 | 1 |是的 TCS | 3210 | 8 | 2021 | 2 |不

    db小提琴here

    【讨论】:

    • 只是一个错字In MySQL 8+ 不是In MySQL 9
    • 是的 MySQL 9 距离发布还有很长的路要走 thx
    猜你喜欢
    • 2021-02-22
    • 2015-01-08
    • 2011-03-24
    • 2019-03-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多