首页 > 解决方案 > 计算不同的值:A列和一对列(A,B)

问题描述

假设我们有以下数据:

    +-----------+----------+---------+
    | user_code | order_id | line_id |
    +-----------+----------+---------+
    | ezz       | 1        | 1       |
    +-----------+----------+---------+
    | ezz       | 1        | 2       |
    +-----------+----------+---------+
    | ezz       | 1        | 2       |
    +-----------+----------+---------+
    | ezz       | 2        | 1       |
    +-----------+----------+---------+
    | ezz       | 2        | 2       |
    +-----------+----------+---------+
    | ezz       | 2        | 2       |
    +-----------+----------+---------+
    | ezz       | 2        | 2       |
    +-----------+----------+---------+
    | ezz       | 2        | 3       |
    +-----------+----------+---------+
    | ezz       | 3        | 1       |
    +-----------+----------+---------+

对于给定user_code的我们如何计算它有多少个唯一的 order_id以及它有多少个唯一的对 (order_id, line_id)

所需的结果应如下所示:

+-----------+-------------+------------------+
| user_code | order_count | order_line_count |
+-----------+-------------+------------------+
| ezz       | 3           | 6                |
+-----------+-------------+------------------+

标签: sqloraclegroup-bycountoracle12c

解决方案


你可以使用:

SELECT user_code,
     COUNT(DISTINCT order_id) AS order_count,
     COUNT(DISTINCT order_id || '^' || line_id) AS order_line_count
                    -- building single value from 2 columns
FROM tab
GROUP BY user_code

推荐阅读