我的 LeetCode 1174 解法有什么问题吗?

问题描述 投票:0回答:1

这是问题的链接

我的解决方案

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) 

我想做的是

  1. 获取每个
    order_date
    的最小值
    delivery_id
    及其对应的
    customer_id
  2. 然后我使用
    order_date
    检查
    customer_pref_delivery_date
    是否与
    IN
    相同。
  3. 然后统计满足步骤2条件的delivery_id的个数。
  4. 然后我将第 3 步中的计数除以不同客户总数。

但是我的代码在提交时提供了错误的答案。

我的代码的行为是否与我的预期不同,或者我的逻辑是否错误? 任何帮助将不胜感激。

mysql group-by distinct
1个回答
1
投票
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;
© www.soinside.com 2019 - 2024. All rights reserved.