sql >> Database teknologi >  >> RDS >> PostgreSQL

SQL-forespørgsel til at transponere kolonnetælling til rækketælling

Disse typer forespørgsler er nemmere at lave med et mål om GROUP BY, som dette:

Select 
case when profile.foo ~* '5.0.2195' then 'Win2k'
     when profile.foo ~* '5.1.2600' then 'WinXP' 
     when profile.foo ~* '5.2.3790' then 'W2k3'
     when (profile.foo ~* '6.0.6000'
        or profile.foo ~* '6.0.6001'
        or profile.foo ~* '6.0.6002') 
        then 'Vista'
     when (profile.foo ~* '6.1.7600'
        or profile.foo ~* '6.1.7601')
        then 'Win7'
     when profile.foo ~* '6.2.9200' then 'Win8'
     when (profile.foo ~* '6.3.9200'
        or profile.foo ~* '6.3.9600')
        then 'Win8.1' ELSE 'Other' END as type,
     count(*) as cnt
From profile
GROUP BY 1

Som kommenteret nedenfor vil denne forespørgsel fungere for gensidigt udelukkende tilfælde, dvs. når profile.foo indeholder en værdi, der repræsenterer et OS pr. række



  1. Liste de forespørgsler, der kører på SQL Server

  2. MySQL optimering af kæmpe bord

  3. Få resultater fra mine egne og venners indlæg

  4. Efterfølger, hvordan man strukturerer chat-delen af ​​appen?