oracle group by一次获取一个组
我的数据是这样的oracle group by一次获取一个组,oracle,perl,Oracle,Perl,我的数据是这样的 1. Fname Lastname DOB ADDR SEX SSN 2. Sanal Pillai 12/11/85 Pune M - 3. Sunil Pillai 05/11/80 Pune M 123456 4. Anju Pillai 12/11/85 Pune F 345679 5. Arachana Pillai 05/11/
1. Fname Lastname DOB ADDR SEX SSN
2. Sanal Pillai 12/11/85 Pune M -
3. Sunil Pillai 05/11/80 Pune M 123456
4. Anju Pillai 12/11/85 Pune F 345679
5. Arachana Pillai 05/11/80 Pune M
-
现在我在DOB上做一个分组,我会得到相应的数据安排
select fname,lastname,dob,addr,sex,ssn from data group by dob(..rest of the columns..) having count(dob) > 1
但我想知道的是,是否有可能一次组建一个团队,即
1. Sanal Pillai 12/11/85 Pune M -
2. Anju Pillai 12/11/85 Pune F 345679
然后剩下的两行这是不可能的。Sql用于从有时具有特定顺序的数据库中获取数据。在用于显示数据的工具中对接收到的数据进行进一步分析。这可以是一种编程语言,也可以是另一种可以使用sql接收数据的工具。您好,我想您可能不知道GROUPBY子句的确切功能。下面我已经发布了几行供您理解 Oracle GROUP BY子句在SELECT语句中用于收集 跨多个记录的数据,并按一个或多个记录对结果进行分组 列 语法:
SELECT col1, col2, ... coln,
aggregate_function (column_name)
FROM tables
WHERE conditions
GROUP BY col1, col2, ... coln;
列_列出了您在select子句中提到的内容和所有内容,您还应该在after group by关键字中提及这些内容。
根据上述语法和您的问题,所需的输出查询为:
select fname,lastname,dob,addr,sex,sum(ssn) as ssn from data group by fname,lastname,dob,addr,sex having count(dob) > 1
有关更多信息,您可以使用或分析函数分配分组ID和顺序,具体如下:
with t1 as (
select data.*, dense_rank() over (order by dob) grp from data
)
select t1.* from t1 order by grp;