sql - Teradata:选定的非聚合值必须属于关联组的一部分

标签 sql teradata

这是我的 SQL 语句:

SELECT 
    A.username,
    A.logdate,
    SUM(A.AMPCPUTIME) AS cpu,
    SUM(A.TOTALIOCOUNT) AS totalIO,
    COUNT(A.QUERYID) AS qrycount,
    (cpu / b.total_CPU) * 100 AS cpu_threshold_percentage,
    (totalIO / b.total_IOUsage) * 100 AS io_threshold_percentage,
    (qrycount / b.QRY_count) * 100 AS qry_threshold_percentage
FROM 
    pdcrinfo.DBQLOGTBL_HST A
INNER JOIN
    VT_BASELINE b ON A.username = b.username
WHERE 
    A.LOGDATE = DATE-1 
    AND A.username NOT IN ('tdstatsmgr', 'tdstatsmgr_ms', 'sysadmin')
GROUP BY
    A.username, A.logdate;

我不知道在分组部分中我错过了哪一列。我在选择部分中只有两个非聚合列。

最佳答案

您的聚合是 CPU、TotalIO 和 QryCount

SELECT 
    A.username,
    A.logdate,
    SUM(A.AMPCPUTIME) AS cpu,
    SUM(A.TOTALIOCOUNT) AS totalIO,
    COUNT(A.QUERYID) AS qrycount,
    (cpu / **b.total_CPU**) * 100 AS cpu_threshold_percentage,
    (totalIO / **b.total_IOUsage**) * 100 AS io_threshold_percentage,
    (qrycount / **b.QRY_count**) * 100 AS qry_threshold_percentage
FROM 
    pdcrinfo.DBQLOGTBL_HST A
INNER JOIN
    VT_BASELINE b ON A.username = b.username
WHERE 
    A.LOGDATE = DATE-1 
    AND A.username NOT IN ('tdstatsmgr', 'tdstatsmgr_ms', 'sysadmin')
GROUP BY
    A.username, A.logdate;

粗体字段(请注意字段周围的**)需要位于当前查询的分组依据中或聚合中。 CPU、TotalIO 和 QryCount 应该可以工作,因为 Teradata 允许在下面的 select 语句中引用内联聚合

查看total_CPU、total_IOUsage、QRY_count

我不知道你的数据,但是你能像之前的聚合一样将它们放入选择中吗?使用、计数、最大值、最小值或求和?然后在您的公式中引用它们?

关于sql - Teradata:选定的非聚合值必须属于关联组的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73730903/

相关文章:

java.sql.sqlintegrityconstraintviolationException ora-00001 唯一约束(scott.table1_pk)违反

sql - SQL Server 10 大性能瓶颈

database-design - Teradata数据 block 大小和表大小计算

java - 如何回滚一次插入到 3 个表中的数据?

mysql - Sql Near Syntax Error CI 如何解决

java - 如何从奇怪的字符(例如 SUB)中清除 csv 文件?

python - 使用 Python 脚本导入数据库

java - 在 TERADATA 中为查询设置默认数据库名称

procedure - 如何在 Teradata 中提取存储过程主体

php - SQL 查询输出的倒序