【发布时间】:2020-06-10 11:40:38
【问题描述】:
我正在使用 Python 访问一个巨大的 Oracle Exadata 数据库。该表的文档相当差,我需要了解奇怪的情况。来自 R/python 世界,我运行了以下查询:
query = ("""
SELECT COUNT(counter) as freq, counter
FROM (
SELECT COUNT(*) as counter
FROM schema.table
WHERE x = 1 AND y = 1
GROUP BY a,b )
GROUP BY counter""")
with cx_Oralce.connct(dsn=tsn, encoding = "UTF-8") as con:
df = pd.read_sql(con=con, query=sql)
这实质上是计算给定 (a,b) 对的观察频率。我以前是他们都是1(他们不是)。所以我想看看推动这一点的观察结果:
query = ("""
SELECT *
FROM schema.table
WHERE x = 1 and y = 1
AND (for each (a,b) there is more than one record)""")
我正在努力将其转换为正确的 Oracle SQL。
在 R (dplyr) 中,这将是 group_by 和 mutate(而不是 summarise)的组合,在 Python 中 pandas 可以使用 transform 完成。
我是 SQL 新手,可能会使用不正确的术语。我很感激被纠正。
【问题讨论】: