代码之家  ›  专栏  ›  技术社区  ›  Crusaderpyro

有条件的多列上的非重复计数

  •  -1
  • Crusaderpyro  · 技术社区  · 6 年前

    我需要使用case条件对多个列的distinct进行计数 我已经知道答案了 here 如果我只有一个专栏。但如果我有多个列,如下所示:

        SELECT COUNT(DISTINCT (CASE WHEN CustomerId > 10 THEN CITY,COUNTRY END))
        FROM Customers;
    

    我得到的错误是

    Error 1: could not prepare statement (1 near ",": syntax error)
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   nosh    6 年前

    我不知道你的专栏是什么,但你可以随时分组。

    SELECT 
      COUNT(1), 
      concat(CITY, ",", COUNTRY) as location 
    FROM Customers where CustomerId > 10 
    GROUP BY location
    

    基本上,这将计算城市和国家的每个独特组合的1。

    SELECT COUNT(
      DISTINCT (CASE WHEN CustomerId > 10 
        THEN CONCAT(CITY,",",COUNTRY) END)
      ) 
    FROM Customers;
    

    出现“Error 1:could not prepare statement(1 near“,”:syntax Error),因为THEN子句需要1个不带逗号的参数