向查询中的两个子选择添加条件

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

我有这个查询。

SELECT DISTINCT
    u.email,
    (
        SELECT
            count(DISTINCT o.id)
        FROM
            orders o
            INNER JOIN cart_dates cd ON cd.order_id = o.id
        WHERE
            u.id = o.user_id
    ) as total,
    (
        SELECT
            count(DISTINCT o.id)
        FROM
            orders o
            INNER JOIN cart_dates cd ON cd.order_id = o.id AND o.pre_order = TRUE
        WHERE
            u.id = o.user_id
    ) as count

FROM
    users u

如何获取行,例如count>(总计/ 2)?

database postgresql postgresql-9.4
1个回答
0
投票

我只是想回答这个问题。

SELECT 
  u.email
FROM
  users u
  INNER JOIN cart_dates cd ON cd.order_id = o.id
GROUP BY
  u.email
HAVING
  COUNT(DISTINCT Case when o.pre_order = TRUE then o.id else null end) >
  (COUNT(DISTINCT o.id)/2)

我试图使其更简单。

© www.soinside.com 2019 - 2024. All rights reserved.