Excel ACE.OLEDB: 查询中的 COUNTIF 等价物

Excel ACE.OLEDB: COUNTIF equivalent in query

我在 ACE.OLEDB 中开发了以下 Microsoft Query:

SELECT 
    Name, Country 
    (SELECT COUNT(*) 
     FROM Table1 as T1 
     WHERE Name = T.Name 
       AND Country = T.Country 
       AND Description="Work"
     GROUP BY Name, Country) / COUNT(*)
FROM 
    Table1 as T
GROUP BY 
    Name, Country

查询工作正常,但它会永远持续执行 Excel 中超过 90k 条记录。

是否可以使用 COUNTIF 等效项来优化此查询?

我想查询可以优化,如果它像这样工作的话:

SELECT 
    Name, Country, 
    COUNTIF(CASE WHEN Description="Work" THEN 1 ELSE 0 END) / COUNT(*)
FROM 
    Table1 as T
GROUP BY 
    Name, Country

为了回复给你的CASE WHEN建议,我尝试了一个简单的概念验证查询:

SELECT SUM(CASE WHEN Description="Work" THEN 1 ELSE 0 END) 
FROM (SELECT "Work" as Description)

我收到 Unrecognized keyword WHEN 错误。

Count 只会数东西。你应该做一个 SUM

SUM(CASE WHEN Description="Work" THEN 1 ELSE 0 END) 

如果不起作用,则求和为 0,否则为 1。

仔细查看您的标签,您提到了 Excel。您可能需要将其更改为

SUM( IIF( Description="Work", 1, 0) )