查询用户表中单个用户获取多个客户号码

问题描述 投票:0回答:1

在我们的航空业中,我们需要在 AIR_USER 表中单次登录查找多个客户编号。表结构如下。

ROW_ID 登录 CUST_NUM FULL_NAME
1-3EW 苏尼尔 3001 苏尼尔·库马尔
1-3QL 苏尼尔克 3002 苏尼尔·库马尔
1-4FV DILIPK 1001 迪利普·库马尔
1-5TF DILIPK 1003 迪利普·库马尔
1-4BX 拉维普 2002 拉维·普拉迪普

我使用了下面的查询,但由于成本和基数达到数十万,因此花费了大量时间。此外,该表有近百万条记录,因为它包含所有用户信息。

SELECT 
  DISTINCT LOGIN, CUST_NUM, COUNT(CUST_NUM) 
FROM AIR_USER 
GROUP BY 
  LOGIN, CUST_NUM 
HAVING COUNT(CUST_NUM) > 1 
ORDER BY LOGIN;

如果此查询正确,您可以帮忙吗?如果正确,您能否协助完善查询。

查询以获取用户表中单个用户的多个客户号码

sql oracle parallel-processing
1个回答
0
投票

请勿在同一(子)查询中使用

DISTINCT
GROUP BY
GROUP BY
将返回每组一行,因此
DISTINCT
毫无意义。

您也不想将

CUST_NUM
包含在
GROUP BY
中:

SELECT LOGIN,
       LISTAGG(CUST_NUM, ',') WITHIN GROUP (ORDER BY cust_num) AS cust_nums,
       COUNT(CUST_NUM) 
FROM   AIR_USER 
GROUP BY LOGIN
HAVING COUNT(CUST_NUM) > 1 
ORDER BY LOGIN
© www.soinside.com 2019 - 2024. All rights reserved.