sql - 计算不同的值: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 |
+-----------+-------------+------------------+
解决方案
你可以使用:
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
推荐阅读
- vba - 显示上次用户在 vba 中打开共享工作簿的时间
- amazon-web-services - 如何处理 SQS + Lambda 中的消费者执行错误?
- dart - Flutter 调用 showTimePicker 函数导致错误:在 null 上调用了 getter 'modalBarrierDismissLabel'
- linux - 如何在unix中分配命令的输出
- ssl - Certify The Web - CheckDNS 错误解析 DnsSecRecursiveDdnsResolver?
- python - 使用 QItemDelegate 在 PyQt5 中的表格中显示图标代替文本
- python - 创建一个用于拆开数据框的函数
- java - 仅当 RecyclerView 可滚动时,如何为 RecyclerView 中的最后一个视图添加填充?
- vba - 将工作表保存到使用工作表标题命名文件的位置
- c++ - 在 C++ 中使用 AKS 素数测试计算孪生素数我做错了什么?