SQL:使用NA查询分组依据和条件

时间:2018-07-12 11:49:27

标签: mysql sql group-by rmysql

我想编写一个SQL查询,该查询在两列分组之后调用一列。我正在使用RMySQL包开发R Studio。我的服务器是MySQL。

表看起来像这样。

organisation      ID     ZIP         Order
        Ikea     ABC     123    2018-05-30
        Ikea     ABC     123    2018-06-01
        Ikea     ABC     123    2018-06-02
        Ikea     DEF     123    2018-06-20
        Ikea     DEF     123    2018-07-01
        Ikea     DEF     123            NA
        Ikea     GHI     123    2018-06-07
        Ikea     GHI     123    2018-06-09

我想按organisationIDZIP对表进行分组,并进行分组,其中分组中最早的Order是六月。如果不适用,我想忽略它们。

所以结果应该像这样:

organisation      ID     ZIP         Order
        Ikea     DEF     123    2018-06-20
        Ikea     DEF     123    2018-07-01
        Ikea     DEF     123            NA
        Ikea     GHI     123    2018-06-07
        Ikea     GHI     123    2018-06-09

这是我的尝试,但我不确定是否正确。我不认为这与我想要的NA有关。如果有人对此进行检查/纠正,那就太好了。

SELECT t.* 
FROM MyTable t JOIN (SELECT organisation, ID, ZIP 
                     FROM MyTable WHERE organisation LIKE Ikea
                     GROUP BY organisation, ID, ZIP
                     HAVING MIN(Order) >= 2018-06-01 AND
                            MIN(Order) < 2018-07-01
                    ) tt
                    ON tt.ID = t.ID AND 
                       tt.organisation = t.organisation

1 个答案:

答案 0 :(得分:0)

我认为您的查询基本上是正确的:

SELECT t.* 
FROM MyTable t JOIN
     (SELECT organisation, ID, ZIP 
      FROM MyTable
      WHERE t.organisation = 'Ikea'
      GROUP BY organisation, ID, ZIP
      HAVING MIN(Order) >= '2018-06-01' AND
             MIN(Order) < '2018-07-01'
     ) tt
     ON tt.ID = t.ID AND 
        tt.organisation = t.organisation;

我在字符串和日期常量周围添加了单引号。

我假设NA在MySQL中确实表示为NULL