我認爲最好的方法是從用戶表中進行選擇,因此您不需要重複刪除ID,只需將條件表達爲WHERE
子句的一部分即可。這應該有助於開始:
#standardSQL
SELECT
user_id,
refer_by
FROM water_db.tb_users
WHERE (
SELECT COUNT(*)
FROM water_db.tb_order
WHERE tb_users.user_id = tb_order.user_id AND
status = 3 AND
DATE(order_date) BETWEEN '2017-02-15' AND '2017-05-15'
) <= 4;
在此查詢中,聯接表示爲涉及兩個表的相關子查詢。您可以使用此查詢使用示例數據來嘗試:
#standardSQL
WITH tb_users AS (
SELECT 1 AS user_id, '[email protected]' AS refer_by UNION ALL
SELECT 2, '[email protected]' UNION ALL
SELECT 3, '[email protected]'
),
tb_order AS (
SELECT 1 AS user_id, TIMESTAMP '2017-04-12' AS order_date, 3 AS status UNION ALL
SELECT 2, TIMESTAMP '2017-05-03', 3 UNION ALL
SELECT 1, TIMESTAMP '2017-03-13', 3 UNION ALL
SELECT 1, TIMESTAMP '2017-02-28', 3 UNION ALL
SELECT 2, TIMESTAMP '2017-05-06', 3 UNION ALL
SELECT 1, TIMESTAMP '2017-05-01', 3 UNION ALL
SELECT 1, TIMESTAMP '2017-05-02', 3
)
SELECT
user_id,
refer_by
FROM tb_users
WHERE (
SELECT COUNT(*)
FROM tb_order
WHERE tb_users.user_id = tb_order.user_id AND
status = 3 AND
DATE(order_date) BETWEEN
'2017-02-15' AND '2017-05-15'
) <= 4;
歡迎來到SO。如果你有問題,請包括你正在嘗試做什麼,你嘗試過什麼,以及它的輸出等。 – Sneha
你是初學者嗎? – maSTAShuFu
是的,我是新來的這個plz幫助在這 – vamsi