SQL如何从上个月的group by中获取值以在当前group by中使用?
您如何获得同一行中今年的潜在客户数和去年的潜在客户数。我需要的查询更复杂,但这是第一步 输出SQL如何从上个月的group by中获取值以在当前group by中使用?,sql,Sql,您如何获得同一行中今年的潜在客户数和去年的潜在客户数。我需要的查询更复杂,但这是第一步 输出 Year,Count,Last Year Count 2016,55,88 2017,77,55 2018,83,77 谢谢您可以尝试左键加入分组子查询 SELECT x.year, x.count, y.count last_year_count FROM (SELECT l1.year, count(l1.leadi
Year,Count,Last Year Count
2016,55,88
2017,77,55
2018,83,77
谢谢您可以尝试左键加入分组子查询
SELECT x.year,
x.count,
y.count last_year_count
FROM (SELECT l1.year,
count(l1.leadid) count
FROM leads l1
GROUP BY l1.year) x
LEFT JOIN (SELECT l1.year,
count(l1.leadid) count
FROM leads l1
GROUP BY l1.year) y
ON y.year = x.year - 1;
如果您的DBMS支持CTE,您也可以使用CTE而不是循环子查询
WITH cte
AS
(
SELECT l1.year,
count(l1.leadid) count
FROM leads l1
GROUP BY l1.year
)
SELECT x.year,
x.count,
y.count last_year_count
FROM cte x
LEFT JOIN cte y
ON y.year = x.year - 1;
可以对第一次选择的结果执行联接。所以你可以做:
SELECT
L1.Year,
count(L1.LeadId),
count(L2.LeadId)
FROM Leads L1
LEFT JOIN Leads L2 on L1.Year = L2.Year+1
Group by Year
使用ISO/ANSI标准滞后功能:
SELECT l.Year, count(*),
LAG(COUNT(*)) OVER (ORDER BY l.YEAR) as prev_year
FROM Leads l
GROUP BY l.Year;
与其他方法相比,这应该具有最好的性能。您使用的是什么RDBMs?您可能希望将其更改为左联接,以便第一行为null,而不是被删除。谢谢Sean,不幸的是,这正是我所尝试的,它无法工作。Sticky Bit的回答非常有效。谢谢Gordon,这看起来很棒。不幸的是,Zoho报告Sql不支持这一点。在使用其他SQL程序时,我会记下它。
SELECT l.Year, count(*),
LAG(COUNT(*)) OVER (ORDER BY l.YEAR) as prev_year
FROM Leads l
GROUP BY l.Year;