Mysql 检查客户是否多次出现在表中
我有一个表,每天都会随着插入时间进行更新。现在,我想检查客户是否同时出现在两次插入中,还是仅出现在其中一次插入中,并相应地进行标记Mysql 检查客户是否多次出现在表中,mysql,Mysql,我有一个表,每天都会随着插入时间进行更新。现在,我想检查客户是否同时出现在两次插入中,还是仅出现在其中一次插入中,并相应地进行标记 insert-time Customer customer-appereance 2019-08-17 Customer01 each-insert-time 2019-08-18 Customer01 each-insert-time 2019-08-17 Custo
insert-time Customer customer-appereance
2019-08-17 Customer01 each-insert-time
2019-08-18 Customer01 each-insert-time
2019-08-17 Customer02 first-list
2019-08-17 Customer03 each-insert-time
2019-08-18 Customer03 each-insert-time
2019-08-17 Customer04 first-list
2019-08-18 Customer05 last-list
我的数据库如下所示:
insert-time customer
2019-08-17 Customer01
2019-08-17 Customer02
2019-08-17 Customer03
2019-08-17 Customer04
2019-08-18 Customer01
2019-08-18 Customer03
2019-08-18 Customer05
我尝试的查询是:
SELECT insert_time, customer,
(CASE WHEN MIN(insert_time) over (PARTITION by customer) = MAX(insert_time) over (PARTITION by customer)
THEN 'first-list' ELSE 'last-list' END) AS customer-appereance
FROM customers
GROUP BY 1,2;
不知何故,它不起作用。我一直在想,我怎样才能把第三个cirtiera“每次插入”放进案例陈述中
WITH
cte1 AS (SELECT customer, MIN(`insert-time`) mindate, MAX(`insert-time`) maxdate
FROM customers
GROUP BY customer),
cte2 AS (SELECT MIN(`insert-time`) mindate, MAX(`insert-time`) maxdate
FROM customers)
SELECT customers.`insert-time`,
customers.customer,
CASE WHEN cte1.mindate = cte2.maxdate THEN 'last-list'
WHEN cte2.mindate = cte1.maxdate THEN 'first-list'
ELSE 'each-insert-time'
END `customer-appereance`
FROM customers
JOIN cte1 USING (customer)
CROSS JOIN cte2
ORDER BY 2,1;
或
指定精确的MySQL版本。MySQL版本为10.3请参阅。谢谢。()
SELECT *,
CASE WHEN MIN(`insert-time`) OVER (PARTITION BY customer) = MAX(`insert-time`) OVER ()
THEN 'last-list'
WHEN MAX(`insert-time`) OVER (PARTITION BY customer) = MIN(`insert-time`) OVER ()
THEN 'first-list'
ELSE 'each-insert-time'
END `customer-appereance`
FROM customers
ORDER BY 2,1;