You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 11g技术问询:按USERID统计指定日期内PRODUCT去重扫描数及状态计数

解决方案

以下SQL可实现需求(注意根据数据库类型调整日期转换逻辑):

SELECT
    USERID,
    COUNT(DISTINCT PRODUCT) AS `PRODUCT SCAN`,
    SUM(CASE WHEN STATUS = 1 THEN 1 ELSE 0 END) AS `STATUS1 CNT`,
    SUM(CASE WHEN STATUS = 2 THEN 1 ELSE 0 END) AS `STATUS2 CNT`
FROM
    your_table_name -- 替换为你的实际表名
WHERE
    -- 若Date是日期类型,直接用范围匹配
    Date BETWEEN '2023-01-01' AND '2023-03-01'
    -- 若Date是dd-mm-yyyy格式的字符串,MySQL中需转换:
    -- STR_TO_DATE(Date, '%d-%m-%Y') BETWEEN '2023-01-01' AND '2023-03-01'
    -- SQL Server中:
    -- CONVERT(DATE, Date, 105) BETWEEN '2023-01-01' AND '2023-03-01'
GROUP BY
    USERID
ORDER BY
    USERID;

逻辑说明

  1. 日期筛选:通过WHERE子句锁定目标时间范围,若Date是字符串类型,必须先转换为日期格式,避免因字符串排序规则导致的筛选错误。
  2. 分组聚合:按USERID分组后:
    • COUNT(DISTINCT PRODUCT):自动去重统计用户扫描过的不同产品数量;
    • SUM(CASE...):用条件判断分别统计两种状态的记录数,不满足条件的记录计0,求和后得到对应状态的总次数。
  3. 排序:按USERID排序,让结果与期望输出格式一致。

内容的提问来源于stack exchange,提问作者Pearl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 10:05:32