Oracle SQL: select 多个不同字段的计数
Oracle SQL: select count of multiple distinct fields
我需要 select
id
、type
和具有唯一 id-type
组合的行数。
所以我尝试了这样的事情:
SELECT ID,
CASE
WHEN /**/ THEN 'FIRST'
WHEN /**/ THEN 'ANOTHER'
ELSE 'ELSE'
END AS TYPE,
COUNT(DISTINCT ID, TYPE)
FROM PRODUCTS
GROUP BY ID, TYPE;
此外,问题是在处理查询时计算的类型,所以当我尝试执行类似以下操作时:
SELECT ID,
/*SOMETHING*/ END AS TYPE,
COUNT(*)
FROM (SELECT DISTINCT ID,TYPE FROM PRODUCTS GROUP BY ID,TYPE);
我知道了:
ORA-00904: "TYPE": invalid identifier
有什么建议吗?
你在找这个吗:
SELECT ID,
(CASE WHEN /**/ THEN 'FIRST'
WHEN /**/ THEN 'ANOTHER'
ELSE 'ELSE'
END) AS TYPE,
COUNT(*)
FROM PRODUCTS
GROUP BY ID,
(CASE WHEN /**/ THEN 'FIRST'
WHEN /**/ THEN 'ANOTHER'
ELSE 'ELSE'
END);
您可以使用子查询:
SELECT DISTINCT ID,
(CASE WHEN /**/ THEN 'FIRST'
WHEN /**/ THEN 'ANOTHER'
ELSE 'ELSE'
END) AS TYPE
FROM PRODUCTS;
然后你可以将其转换为子查询::
SELECT ID, TYPE, COUNT(*)
FROM ( <QUERY HERE> ) T
GROUP BY ID, TYPE;
我需要 select
id
、type
和具有唯一 id-type
组合的行数。
所以我尝试了这样的事情:
SELECT ID,
CASE
WHEN /**/ THEN 'FIRST'
WHEN /**/ THEN 'ANOTHER'
ELSE 'ELSE'
END AS TYPE,
COUNT(DISTINCT ID, TYPE)
FROM PRODUCTS
GROUP BY ID, TYPE;
此外,问题是在处理查询时计算的类型,所以当我尝试执行类似以下操作时:
SELECT ID,
/*SOMETHING*/ END AS TYPE,
COUNT(*)
FROM (SELECT DISTINCT ID,TYPE FROM PRODUCTS GROUP BY ID,TYPE);
我知道了:
ORA-00904: "TYPE": invalid identifier
有什么建议吗?
你在找这个吗:
SELECT ID,
(CASE WHEN /**/ THEN 'FIRST'
WHEN /**/ THEN 'ANOTHER'
ELSE 'ELSE'
END) AS TYPE,
COUNT(*)
FROM PRODUCTS
GROUP BY ID,
(CASE WHEN /**/ THEN 'FIRST'
WHEN /**/ THEN 'ANOTHER'
ELSE 'ELSE'
END);
您可以使用子查询:
SELECT DISTINCT ID,
(CASE WHEN /**/ THEN 'FIRST'
WHEN /**/ THEN 'ANOTHER'
ELSE 'ELSE'
END) AS TYPE
FROM PRODUCTS;
然后你可以将其转换为子查询::
SELECT ID, TYPE, COUNT(*)
FROM ( <QUERY HERE> ) T
GROUP BY ID, TYPE;