sql:用na查询groupby和conditions

ctrmrzij  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(403)

我想编写一个sql查询,在groupby两列之后调用一列。我正在使用rmysql包开发r studio。我的服务器是mysql。
这张table看起来像这样。

  1. organisation ID ZIP Order
  2. Ikea ABC 123 2018-05-30
  3. Ikea ABC 123 2018-06-01
  4. Ikea ABC 123 2018-06-02
  5. Ikea DEF 123 2018-06-20
  6. Ikea DEF 123 2018-07-01
  7. Ikea DEF 123 NA
  8. Ikea GHI 123 2018-06-07
  9. Ikea GHI 123 2018-06-09

我想把table按 organisation , ID 以及 ZIP ,并在最早 Order 这个小组在六月。如果是na,我想忽略它们。
所以结果应该是这样的:

  1. organisation ID ZIP Order
  2. Ikea DEF 123 2018-06-20
  3. Ikea DEF 123 2018-07-01
  4. Ikea DEF 123 NA
  5. Ikea GHI 123 2018-06-07
  6. Ikea GHI 123 2018-06-09

这是我的尝试,但我不确定是否正确。我不认为它能像我所希望的那样处理nas。如果有人检查/纠正这个就太好了。

  1. SELECT t.*
  2. FROM MyTable t JOIN (SELECT organisation, ID, ZIP
  3. FROM MyTable WHERE organisation LIKE Ikea
  4. GROUP BY organisation, ID, ZIP
  5. HAVING MIN(Order) >= 2018-06-01 AND
  6. MIN(Order) < 2018-07-01
  7. ) tt
  8. ON tt.ID = t.ID AND
  9. tt.organisation = t.organisation
ui7jx7zq

ui7jx7zq1#

我认为你的问题基本上是正确的:

  1. SELECT t.*
  2. FROM MyTable t JOIN
  3. (SELECT organisation, ID, ZIP
  4. FROM MyTable
  5. WHERE t.organisation = 'Ikea'
  6. GROUP BY organisation, ID, ZIP
  7. HAVING MIN(Order) >= '2018-06-01' AND
  8. MIN(Order) < '2018-07-01'
  9. ) tt
  10. ON tt.ID = t.ID AND
  11. tt.organisation = t.organisation;

我在字符串和日期常量周围添加了单引号。
我想 NA 真的代表为 NULL 在mysql中。

相关问题