AND (${alias}.member_expire_at IS NULL OR ${alias}.member_expire_at <= NOW())
AND ${alias}.member_expire_at IS NOT NULL AND ${alias}.member_expire_at > NOW()
SELECT
COALESCE((
SELECT COUNT(1)
FROM tcm_app_user u
WHERE u.deleted = 0
AND u.created_at =]]> #{startTime}
AND u.created_at #{endTime}
), 0) AS registeredUserCount,
COALESCE((
SELECT COUNT(1)
FROM tcm_app_user u
WHERE u.deleted = 0
AND u.type = 1
AND u.created_at =]]> #{startTime}
AND u.created_at #{endTime}
), 0) AS doctorRegisteredCount,
COALESCE((
SELECT COUNT(1)
FROM tcm_member_purchase_order o
INNER JOIN tcm_app_user u ON u.id = o.app_user_id AND u.deleted = 0
WHERE o.deleted = 0
AND o.status IN ('PAID', 'REFUNDED')
AND o.paid_at IS NOT NULL
AND o.paid_at =]]> #{startTime}
AND o.paid_at #{endTime}
), 0) AS memberOpenCount,
COALESCE((
SELECT COUNT(1)
FROM tcm_course_purchase_order o
INNER JOIN tcm_app_user u ON u.id = o.app_user_id AND u.deleted = 0
WHERE o.deleted = 0
AND o.status IN ('PAID', 'REFUNDED')
AND o.paid_at IS NOT NULL
AND o.paid_at =]]> #{startTime}
AND o.paid_at #{endTime}
), 0) AS coursePurchaseCount,
COALESCE((
SELECT COUNT(1)
FROM tcm_live_watch_record w
INNER JOIN tcm_app_user u ON u.id = w.app_user_id AND u.deleted = 0
WHERE w.watch_start =]]> #{startTime}
AND w.watch_start #{endTime}
), 0) AS liveWatchClickCount,
COALESCE((
SELECT COUNT(DISTINCT l.app_user_id)
FROM tcm_app_user_entry_log l
INNER JOIN tcm_app_user u ON u.id = l.app_user_id AND u.deleted = 0
WHERE l.deleted = 0
AND l.entry_time =]]> #{startTime}
AND l.entry_time #{endTime}
), 0) AS activeEnterUserCount,
COALESCE((
SELECT COUNT(1)
FROM tcm_app_user u
WHERE u.deleted = 0
), 0) AS totalUserCount
FROM DUAL
SELECT
DATE(u.created_at) AS statDate,
COUNT(1) AS registeredUserCount,
COALESCE(SUM(CASE WHEN u.type = 1 THEN 1 ELSE 0 END), 0) AS doctorRegisteredCount
FROM tcm_app_user u
WHERE u.deleted = 0
AND u.created_at =]]> #{startTime}
AND u.created_at #{endTime}
GROUP BY DATE(u.created_at)
ORDER BY DATE(u.created_at) ASC
SELECT
DATE(l.entry_time) AS statDate,
COUNT(DISTINCT l.app_user_id) AS activeEnterUserCount
FROM tcm_app_user_entry_log l
INNER JOIN tcm_app_user u ON u.id = l.app_user_id AND u.deleted = 0
WHERE l.deleted = 0
AND l.entry_time =]]> #{startTime}
AND l.entry_time #{endTime}
GROUP BY DATE(l.entry_time)
ORDER BY DATE(l.entry_time) ASC
SELECT
COALESCE((
SELECT COUNT(1)
FROM tcm_member_purchase_order o
INNER JOIN tcm_app_user u ON u.id = o.app_user_id AND u.deleted = 0
WHERE o.deleted = 0
AND o.status IN ('PAID', 'REFUNDED')
AND o.paid_at IS NOT NULL
AND o.paid_at =]]> #{startTime}
AND o.paid_at #{endTime}
AND o.member_type = 'MONTH_CARD'
), 0) AS monthMemberPurchaseCount,
COALESCE((
SELECT COUNT(1)
FROM tcm_member_purchase_order o
INNER JOIN tcm_app_user u ON u.id = o.app_user_id AND u.deleted = 0
WHERE o.deleted = 0
AND o.status IN ('PAID', 'REFUNDED')
AND o.paid_at IS NOT NULL
AND o.paid_at =]]> #{startTime}
AND o.paid_at #{endTime}
AND o.member_type = 'QUARTER_CARD'
), 0) AS quarterMemberPurchaseCount,
COALESCE((
SELECT COUNT(DISTINCT o.app_user_id)
FROM tcm_course_purchase_order o
INNER JOIN tcm_app_user u ON u.id = o.app_user_id AND u.deleted = 0
WHERE o.deleted = 0
AND o.status IN ('PAID', 'REFUNDED')
AND o.paid_at IS NOT NULL
AND o.paid_at =]]> #{startTime}
AND o.paid_at #{endTime}
), 0) AS courseMemberUserCount
FROM DUAL