如果想检索出所有字段 但只按 FILENAME, SFNAME, TYPE 分组,检索出所有内容,改怎么写
时间: 2024-03-07 21:46:51 浏览: 55
如果您想要检索出所有字段,并按 FILENAME、SFNAME 和 TYPE 列进行分组,同时检索出每个组的所有内容,可以将查询语句修改为:
```
SELECT *
FROM SMF471
WHERE (ACCOUNT = 'FTP' OR ACCOUNT = 'HINO2')
AND (FILENAME, SFNAME, TYPE) IN (
SELECT FILENAME, SFNAME, TYPE
FROM SMF471
WHERE (ACCOUNT = 'FTP' OR ACCOUNT = 'HINO2')
GROUP BY FILENAME, SFNAME, TYPE
);
```
这个查询会按 FILENAME、SFNAME、TYPE 列进行分组,同时检索出每个组的所有内容。它使用了子查询来获取所有不同的 FILENAME、SFNAME 和 TYPE 组合,并将它们与原表进行比较,从而获取每个组的所有内容。
相关问题
如果想检索出所有字段 但只按 FILENAME, SFNAME, TYPE; 怎么写
如果您想要检索出所有字段,但只按 FILENAME、SFNAME 和 TYPE 列进行分组,可以将查询语句修改为:
```
SELECT FTP_USER, ACCOUNT, IP_ADDR, FILENAME, SFNAME, TYPE, MAX(to_date(FTP_DATE || ' ' || FTP_TIME ,'MM/DD/YYYY hh24:mi:ss')), COUNT(1), AVG(FILE_SIZE)
FROM SMF471
WHERE (ACCOUNT = 'FTP' OR ACCOUNT = 'HINO2')
GROUP BY FILENAME, SFNAME, TYPE, FTP_USER, ACCOUNT, IP_ADDR;
```
这个查询会按 FILENAME、SFNAME、TYPE 列进行分组,并计算每个组的 FTP_USER、ACCOUNT、IP_ADDR、最大日期时间、行数和文件大小平均值。
SELECT FTP_USER,ACCOUNT,IP_ADDR,FILENAME,SFNAME,TYPE,MAX(to_date(FTP_DATE || ' ' || FTP_TIME ,'MM/DD/YYYY hh24:mi:ss')),COUNT(1),AVG(FILE_SIZE) FROM SMF471 where (ACCOUNT = 'FTP' or ACCOUNT = 'HINO2') group by FTP_USER,ACCOUNT,IP_ADDR,FILENAME,SFNAME,TYPE; 修改为只按照FILENAME, SFNAME, TYPE 分组,并检索全部字段
好的,以下是修改后的SQL语句:
```
SELECT FTP_USER, ACCOUNT, IP_ADDR, FILENAME, SFNAME, TYPE, MAX(TO_DATE(FTP_DATE || ' ' || FTP_TIME, 'MM/DD/YYYY hh24:mi:ss')), COUNT(1), AVG(FILE_SIZE)
FROM SMF471
WHERE (ACCOUNT = 'FTP' OR ACCOUNT = 'HINO2')
GROUP BY FILENAME, SFNAME, TYPE, FTP_USER, ACCOUNT, IP_ADDR;
```
这个查询会根据FILENAME、SFNAME和TYPE进行分组,并且检索全部字段。注意,由于我们改变了分组字段的顺序,因此在GROUP BY子句中需要将FILENAME、SFNAME和TYPE放在前面,然后才是其他字段。
阅读全文