这是我的 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/