是否有可能根據文本函數在sql中進行計數?我想計算一個郵政編碼的實例(它的類型爲DECIMAL
),但是,某些行具有5位數的郵政編碼,而其他郵政編碼具有9位數的郵政編碼。SQL計數與文本比較
我當前的查詢:
select patzip, count(patzip) as zip_count
from patdemo_t
where patstate='KY'
group by patzip
order by zip_count desc
是否有可能根據文本函數在sql中進行計數?我想計算一個郵政編碼的實例(它的類型爲DECIMAL
),但是,某些行具有5位數的郵政編碼,而其他郵政編碼具有9位數的郵政編碼。SQL計數與文本比較
我當前的查詢:
select patzip, count(patzip) as zip_count
from patdemo_t
where patstate='KY'
group by patzip
order by zip_count desc
修訂
SELECT SUBSTRING(CONVERT(VARCHAR(9),patzip), 1, 5) zip, COUNT(*) zip_count
FROM patdemo_t
WHERE patstate = 'KY'
GROUP BY SUBSTRING(CONVERT(VARCHAR(9), patzip), 1, 5)
ORDER BY zip DESC
輸出示例:
| ZIP | ZIP_COUNT | --------------------- | 41017 | 2 | | 41016 | 1 |
這裏是SQLFiddle演示
這給了我總數。我需要每個5位數的郵政編碼。我需要根據給定州的郵政編碼進行人口普查。現在,我有: 選擇patzip,從patdemo_t 計數(patzip)作爲zip_count 其中patstate =「KY」 組由patzip 爲了通過zip_count遞減 這給了我所有的郵政編碼,和計數,但是,它以不同的方式處理每個代碼。我需要前5位數字作爲計數的基礎。因此,41017和410179876會增加41017的計數。 –
@StevenThompson查看更新的答案 – peterm
所以我認爲這將起作用,除了patzip字段是十進制類型,顯然你不能在子字符串函數中使用。 –
你使用了哪個數據庫? – JohnFx
SQL Server 2005,在這種情況下。 –