Mysql 我正试图获得不同电话号码和LTV的州数

Mysql 我正试图获得不同电话号码和LTV的州数,mysql,sql,Mysql,Sql,我写的查询是: SELECT ST,COUNT(PHONE) FROM Consumer.Axciom092013 WHERE MR_AMT >= (HOME_MKT_VALUE_(.45)) and ST = 'TX' or ST = 'CA' or ST = 'AZ' or ST = 'CO' or ST = 'FL'; 我只是想找出这些州的贷款价值比,但现在我只需要统计每个州有多少不同电话号码的记录 我在第1行中不断发现错误语法。我以为我已经一步一步地解决了,但似乎无法开始工作

我写的查询是:

SELECT ST,COUNT(PHONE) FROM Consumer.Axciom092013 
WHERE MR_AMT >= (HOME_MKT_VALUE_(.45)) 
and ST = 'TX' or ST = 'CA' or ST = 'AZ' or ST = 'CO' or ST = 'FL';
我只是想找出这些州的贷款价值比,但现在我只需要统计每个州有多少不同电话号码的记录

我在第1行中不断发现错误语法。
我以为我已经一步一步地解决了,但似乎无法开始工作

我已切换了查询,并尝试运行
SELECT ST,COUNT(*)
,但随后出现一个错误,表示函数
HOME\u MKT\u VALUE
不存在

SELECT     ST, COUNT(DISTINCT PHONE) 
FROM       Consumer.Axciom092013 
WHERE      MR_AMT >= (HOME_MKT_VALUE_(.45)) 
           and ST IN ('TX', 'CA', 'AZ', 'CO', 'FL')
GROUP BY   ST;                                    //mistaken , PHONE

编辑:我犯了一个错误,不应按电话分组。

我怀疑您想要这个:

SELECT ST, COUNT(distinct PHONE)
FROM Consumer.Axciom092013 
WHERE MR_AMT >= HOME_MKT_VALUE_ * 0.45 and
      ST IN ('TX', 'CA', 'AZ', 'CO', 'FL');
SQL只与显式的
*
相乘。表达式
HOME\u MKT\u VALUE\u45)
是函数调用的语法,而不是乘法

我为
phone
添加了
distinct
,因为您说您想要“distinct phone number”,这意味着不同行上可能有重复的电话号码

编辑:

顺便说一句,您的原始查询在
where
子句中实际上具有以下逻辑:

WHERE (MR_AMT >= HOME_MKT_VALUE_ * 0.45 and ST = 'TX')
      or ST IN ('CA', 'AZ', 'CO', 'FL');

如果这是你真正想要的逻辑,那么就用它来代替。

如果你得到了电话记录的计数,为什么要在电话上分组?@PinnyM看到你的第一个答案,你错过了他想要的。他想数一数不同的电话号码。我也只是想和大家一起打电话,这样他就能得到他想要的。你确定这就是你认为的吗?您的查询似乎为每个唯一的ST和PHONE返回一行(计算该电话被复制的次数)。似乎OP需要一个不同电话号码的计数(删除重复的电话号码的计数)。@PinnyM我确信,它将在ST上分组,在ST下分组,它将在电话上分组。@PinnyM我已经解释过了。你能告诉我,组在做什么吗?关于第二个错误,你确定函数存在(并且拼写正确)吗?你还用IN谓词替换了or。