这是问题的链接。
我的解决方案
SELECT ROUND(COUNT(DISTINCT customer_id)*100/(SELECT COUNT(DISTINCT customer_id) FROM delivery),2) AS immediate_percentage
FROM
delivery
WHERE (delivery_id,customer_pref_delivery_date)
IN
(SELECT delivery_id,min(order_date) as first_login FROM delivery GROUP BY customer_id)
我想做的是
order_date
的最小值delivery_id
及其对应的customer_id
。order_date
检查 customer_pref_delivery_date
是否与 IN
相同。但是我的代码在提交时提供了错误的答案。
我的代码的行为是否与我的预期不同,或者我的逻辑是否错误? 任何帮助将不胜感激。
SELECT ROUND(100 * AVG(min_dates_are_equal), 2) immediate_percentage
FROM (
SELECT MIN(order_date) = MIN(customer_pref_delivery_date) min_dates_are_equal
FROM delivery
GROUP BY customer_id
) subquery;