【问题标题】:Including and excluding specific records包括和排除特定记录
【发布时间】:2020-06-02 00:53:57
【问题描述】:

我想找一些有特殊条件的买家(在这种情况下,交易> = 600000称为明星会员)

在这种情况下,我想找出2020年1月和2020年3月存在的明星会员(交易> = 600000),但不包括在2020年2月进行交易的明星会员。

这是我的语法

SELECT users_id 
FROM order_star_member  
GROUP BY users_id
HAVING SUM(CASE WHEN MONTHNAME(createdAt) = 'January' 
                THEN total_price_star_member END) >= 600000
   AND SUM(CASE WHEN MONTHNAME(createdAt) = 'March' 
                THEN total_price_star_member END) >= 600000
    AND NOT EXISTS (SELECT 1 FROM order_star_member
    GROUP BY users_id
    having sum(case when monthname(createdAt) = 'February'
    THEN total_price_star_member END) >= 600000);

这是我的小提琴

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=2c85037215fe71f700b51c8fd3a5ae76

在我的小提琴中,预期的结果是 users_Id 15,因为该 id 订单在 1 月和 3 月但不是在 2 月

【问题讨论】:

  • 什么是“2020年2月做交易”是什么意思?您希望在小提琴中返回哪个 users_id?
  • 所以根据我的小提琴,应该是 users_id '15' 在 1 月和 3 月而不是在 2 月进行交易@danblack

标签: mysql mysql-workbench mysql-error-1064


【解决方案1】:

首先在内部t我们按月分组确定所有明星成员。

按 user_id 的外部分组组。他们的分数是他们的star_member的总和。

对于二月(下面查询的第一行中的 m=2(二月是第二个月)),如果他们是 star_member,他们会得到一个罚分 (-100) 作为SUM 无法克服的任意值.

month_score=2 存在的唯一方式是,如果用户的 star_member 在 1 月和 3 月都为真 (1) 而不是 2 月。

SELECT users_id, SUM(IF(m=2 and star_member, -100, star_member)) as month_score
FROM
  (SELECT users_id,
          MONTH(createdAt) as m,
          SUM(total_price_star_member) >= 600000 as star_member
  FROM order_star_member  
  WHERE createdAt BETWEEN '20190101' AND '20190331'
  GROUP BY users_id, m
) t
GROUP BY users_id
HAVING month_score=2

fiddle

【讨论】:

  • thankyouuu,我会尝试您的查询,但是如果我想要不同的标准,例如 1 月和 2 月的明星会员,但 3 月或 2 月和 3 月没有,您能解释一下我应该更改哪一部分但不是在一月份
  • m 是 1-12 个月的数字。所以对于 3 月,外部组中的 m = 3 by。一月份的 m=1。
  • 抱歉,如果我想找出 1 月和 2 月存在但 3 月不存在的用户,我应该更改哪种语法?
  • so for "not march",同上用GROUP BY users_id, IF(m=3, NOT star_member, star_member)替换外层组。 fiddle最后两个查询
  • 不是三月和二月怎么样,所以只有一月才存在,你能解释一下吗? @danblack
猜你喜欢
  • 2013-05-31
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-13
相关资源
最近更新 更多