我的列中有一个包含电话号码的表格。我想使用COUNT(*)
返回特定区域代码显示的次数。
PHONE:
555-555-5565
323-595-8686
666-565-5232
323-599-0000
查询后:
ZIP: FREQUENCY:
555 1
323 2
666 1
非工作查询:
select distinct (substr(phone,0,3)) as "AREA_CODE", count(distinct substr(phone,0,3)) as "COUNT",
from address
我觉得我应该将电话号码的子字符串作为区域代码作为一个结果列,然后用另一个计算频率,但我似乎无法让它工作。帮助
答案 0 :(得分:2)
使用select distinct
进行此类查询的想法来自何处?
正确的构造是group by
。学习SQL!
select substr(phone, 1, 3)) as "AREA_CODE", count(*) as "COUNT"
from address
group by substr(phone, 1, 3)) as "AREA_CODE";
注意:
substr()
从" 1"开始计数不是" 0"。count(distinct)
不合适。它只会在引用group by
键时返回1。distinct
在SQL中是非常特殊的用途。你通常想避免它。答案 1 :(得分:0)
您可以创建一个存储zip的临时表:
create table #TempTable
(
Zip Varchar(3)
)
INSERT INTO #TempTable (Zip )
SELECT substr(phone,0,3) from Address
然后您可以查询并统计此结果:
Select Zip , count(distinct Zip ) as FREQUENCY
from #TempTable
group by Zip