在我的学校,我们学习oracle sql developer。 我的任务很简单。 我需要计算同一列中有多少相同的值,例如:
COLA COLB COLC ....
A ... ... ....
A ... ... ....
A ... ... ....
B ... ... ....
B ... ... ....
C ... ... ....
C ... ... ....
D ... ... ....
所以我需要以下信息:A的数量,B的数量和数量。
重要的是我不能使用group by。 我唯一可以使用的是:
select
,from
,where
,union
,intersect
,minus
,distinct
,count
,and
,or
,as
,between
。
现在无法解决这个问题,有什么帮助吗?
答案 0 :(得分:1)
基本上,你的问题是如何在不使用GROUP BY的情况下实现GROUP BY。
<c:forEach var="row" items="${memberList}">
<tr>
<td><c:out value="${row.id}"/> </td>
<td><c:out value="${row.username}"></c:out> </td>
<td><c:out value="${row.address}"></c:out> </td>
<td><c:out value="${row.email}"></c:out> </td>
<td><c:out value="${row.contact}"></c:out> </td>
<td></td>
<td><a href="MemberDetailUpdate.jsp" name="Edit">Edit</a> </td>
</tr>
</c:forEach>
答案 1 :(得分:1)
以下是使用pairs = MapThread[{#1, #2} &, {l1, l2}]
的解决方案。它假设您只有UNION
到A
的字母。
D
这将为您提供如下所示的输出表:
SELECT COUNT(COLA) AS theCount, 'A' as theType
From table
WHERE COLA = 'A'
UNION ALL
SELECT COUNT(COLA) AS theCount, 'B' as theType
From table
WHERE COLA = 'B'
UNION ALL
SELECT COUNT(COLA) AS theCount, 'C' as theType
From table
WHERE COLA = 'C'
UNION ALL
SELECT COUNT(COLA) AS theCount, 'D' as theType
From table
WHERE COLA = 'D'
免责声明:如果您只有几种类型的列值,则此解决方案很不错。如果您有一组未知值或大量已知值,则无法实现这一目标。
答案 2 :(得分:1)
我认为你正在寻找重复计数
╔══════════╦═════════╗
║ theCount ║ theType ║
╠══════════╬═════════╣
║ 3 ║ A ║
╠══════════╬═════════╣
║ 2 ║ B ║
╠══════════╬═════════╣
║ 2 ║ C ║
╠══════════╬═════════╣
║ 1 ║ D ║
╚══════════╩═════════╝
答案 3 :(得分:1)
因此,您只需要在不使用group by
子句...
select distinct cola, cnt
from(
select cola, count(*) over (partition by cola) as cnt
from table
)
计算分区的事情是analytic function syntax