mysql - 检查客户是否在表格中出现多次
问题描述
我有一张每天都会更新插入时间的表格。现在我想检查一个客户是出现在两个插入时间中还是只出现在其中一个中,并相应地标记它们。
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“每次插入时间”放入 CASE 语句中?
解决方案
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;
或者
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;
推荐阅读
- r - 用函数创建复杂的公式
- javascript - 如何使用参数 ind d3.selectAll('line').each
- sapui5 - SAP custom translations for standard SAPUI5 application
- python - 列表的唯一列表
- image-processing - Tesseract OCR,字幕提取预处理
- python - 根据记录的大小/数量在 pandas 中删除记录的优雅方法
- r - 图例和多个 geom_line
- asp.net-mvc - 如何在主视图中调用具有模型的局部视图两个视图都具有不同的模型
- reactjs - react-navigation 将函数作为道具传递给自定义标头组件
- java - 使用比较器对 java 对象进行排序时出错:抽象且不覆盖抽象方法比较