Oracle HAVING子句中的2x计数
我有以下问题: 我想在一个表中统计数据,在第二个表中统计数据,并在having子句中比较计数,并且只显示具有相同计数的行 诸如此类:Oracle HAVING子句中的2x计数,oracle,count,Oracle,Count,我有以下问题: 我想在一个表中统计数据,在第二个表中统计数据,并在having子句中比较计数,并且只显示具有相同计数的行 诸如此类: SELECT bla FROM T1 t1 JOIN T2 t2 ON t1.id = t2.id HAVING COUNT(counted data from table1) = COUNT(counted data from table2) 你知道吗? 干杯标准SQL: SELECT t1.bla, t1.id, t1.counter, t2.counter
SELECT bla
FROM T1 t1 JOIN T2 t2
ON t1.id = t2.id
HAVING COUNT(counted data from table1) = COUNT(counted data from table2)
你知道吗?
干杯标准SQL:
SELECT t1.bla, t1.id, t1.counter, t2.counter
FROM (SELECT t1.bla, t1.id, COUNT(counted_data_from_t1) AS counter
FROM t1
GROUP BY t1.bla, t1.id
) AS t1
JOIN (SELECT t2.id, COUNT(counted_data_from_t2) AS counter
FROM t2
GROUP BY t2.id
) AS t2
ON t1.id = t2.id AND t1.counter = t2.counter
Oracle SQL,因为Oracle不喜欢以前的表别名:
SELECT t1.bla, t1.id, t1.counter, t2.counter
FROM (SELECT t1.bla, t1.id, COUNT(counted_data_from_t1) AS counter
FROM t1
GROUP BY t1.bla, t1.id
) t1
JOIN (SELECT t2.id, COUNT(counted_data_from_t2) AS counter
FROM t2
GROUP BY t2.id
) t2
ON t1.id = t2.id AND t1.counter = t2.counter
你只需要决定bla来自哪里;我提名了t1。我假设对于任何给定的t1.id值,都有一个值t1.bla。如果没有,那么您需要更清楚地解释您正在计算的内容、各个列的位置以及表的键是什么
更新:很抱歉没有注意到Oracle标记并给出无效的Oracle语法。标准SQL:
SELECT t1.bla, t1.id, t1.counter, t2.counter
FROM (SELECT t1.bla, t1.id, COUNT(counted_data_from_t1) AS counter
FROM t1
GROUP BY t1.bla, t1.id
) AS t1
JOIN (SELECT t2.id, COUNT(counted_data_from_t2) AS counter
FROM t2
GROUP BY t2.id
) AS t2
ON t1.id = t2.id AND t1.counter = t2.counter
WITH jezyki as
(SELECT pseudo_wampira, COUNT(*) AS counter
FROM Jezyki_obce_w
GROUP BY pseudo_wampira
)
,sprawnosc as
(SELECT pseudo_wampira, sprawnosc, COUNT(*) AS counter
FROM Sprawnosci_w
GROUP BY pseudo_wampira, sprawnosc
)
SELECT jezyki.pseudo_wampira, sprawnosc.counter
FROM jezyki,sprawnosc
WHERE jezyki.pseudo_wampira = sprawnosc.pseudo_wampira
AND jezyki.counter = sprawnosc.counter
Oracle SQL,因为Oracle不喜欢以前的表别名:
SELECT t1.bla, t1.id, t1.counter, t2.counter
FROM (SELECT t1.bla, t1.id, COUNT(counted_data_from_t1) AS counter
FROM t1
GROUP BY t1.bla, t1.id
) t1
JOIN (SELECT t2.id, COUNT(counted_data_from_t2) AS counter
FROM t2
GROUP BY t2.id
) t2
ON t1.id = t2.id AND t1.counter = t2.counter
你只需要决定bla来自哪里;我提名了t1。我假设对于任何给定的t1.id值,都有一个值t1.bla。如果没有,那么您需要更清楚地解释您正在计算的内容、各个列的位置以及表的键是什么
更新:很抱歉没有注意到Oracle标记并给出无效的Oracle语法。计算什么??选择count*fromt1将返回总行数,您不能将其应用于检查其他表中的行,您能详细说明一下吗?什么是计数??select count*from T1将返回总行数,您不能将其应用于检查其他表中的行,您能详细说明一下吗?我是按照您的方式执行的,但有一个错误行5,第9列,SQL命令未正确结束select PSUDE_wampira中的select jezyki.PSUDE_wampira,sprawnosc.counter,通过伪wampira从Jezyki_-obce_-w组中计数*作为计数器作为Jezyki-JOIN选择伪wampira,sprawnosc,通过伪wampira从Sprawnosci_-w组中计数*作为计数器,在jezyki.pseudo_-wampira=sprawnosc.pseudo_-wampira和jezyki.counter=sprawnosc.counter上使用sprawnosc作为sprawnosc您看到错误了吗?很抱歉,我在注释中遇到了编码问题。代码有类似于您的表格;第五行是jezyki@robocoder-Oracle不允许用户使用表别名,尽管它允许使用列别名。尝试删除该单词,使第5行变为t1,第9行变为t2。@AlexPoole:感谢您在我忙得没法回答时提供的帮助。我是按照您的方式完成的,但第5行第9列有一个错误,SQL命令没有正确结束SELECT pseudo_-wampira中的SELECT jezyki.pseudo_-wampira,sprawnosc.counter,通过伪wampira从Jezyki_-obce_-w组中计数*作为计数器作为Jezyki-JOIN选择伪wampira,sprawnosc,通过伪wampira从Sprawnosci_-w组中计数*作为计数器,在jezyki.pseudo_-wampira=sprawnosc.pseudo_-wampira和jezyki.counter=sprawnosc.counter上使用sprawnosc作为sprawnosc您看到错误了吗?很抱歉,我在注释中遇到了编码问题。代码有类似于您的表格;第五行是jezyki@robocoder-Oracle不允许用户使用表别名,尽管它允许使用列别名。试着去掉那个词,这样第5行就变成t1行,第9行变成t2行。@AlexPoole:谢谢你在我忙得没时间回复的时候帮了我的忙。
WITH jezyki as
(SELECT pseudo_wampira, COUNT(*) AS counter
FROM Jezyki_obce_w
GROUP BY pseudo_wampira
)
,sprawnosc as
(SELECT pseudo_wampira, sprawnosc, COUNT(*) AS counter
FROM Sprawnosci_w
GROUP BY pseudo_wampira, sprawnosc
)
SELECT jezyki.pseudo_wampira, sprawnosc.counter
FROM jezyki,sprawnosc
WHERE jezyki.pseudo_wampira = sprawnosc.pseudo_wampira
AND jezyki.counter = sprawnosc.counter