【问题标题】:SQL: Query for group by and conditions with NASQL:使用 NA 查询分组依据和条件
【发布时间】:2018-12-20 15:23:43
【问题描述】:

我想编写一个 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 分组在六月。如果是 NA,我想忽略它们。

所以结果应该是这样的:

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

【问题讨论】:

    标签: mysql sql group-by rmysql


    【解决方案1】:

    我认为你的查询基本正确:

    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

    【讨论】:

      猜你喜欢
      • 2015-12-19
      • 1970-01-01
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多