webForumDet fria alternativet
Logga in / Bli medlem

dela upp ett värde i flera kategorier

Databaser & SQL

2 svar · 313 visningar · startad av pulse

Medlem sedan nov. 200373 inlägg
Trådstart#1

Har problem med att lösa den här på ett bra sätt. Jag har en tabell med två kolumner:

lön
grupp (en varchar innehåller siffrorna 1..6 och 'R')

Lön	Grupp
25000	1
31000	2
32000	2
32000	R

Vad jag försöker göra är följande:

 
Lön		Grupp1		Grupp2		GruppR
10000-20000	0		0		0
20001-30000	1		0		0
30001-40000	0		2		1

(siffrorna under grupp1... är antalet individer i den gruppen som har en lön i intervallet lön). Intervallet ska kunna skrivas in av mig.

Kruxet är att grupp och lön måste ligga i samma tabell som jag gjort ovan. Däremot är det tillåtet att använda sig av temptabeller osv.

Medlem sedan dec. 200012 464 inlägg
#2

Samma metodik, skapa en hjälptabell (ht) som innehåller två kolumner, den första som innehåller undre gränsen och en för den övre gränsen för ditt löneinterval.

select low,high,
  sum(case when grupp.grupp = '1' and grupp.lön is not null then 1 else 0 end),
  sum(case when grupp.grupp = '2' and grupp.lön is not null then 1 else 0 end),
  sum(case when grupp.grupp = 'R' and grupp.lön is not null then 1 else 0 end)
 from ht left join grupp on grupp.lön between ht.low and ht.high 
 group by low,high
Medlem sedan nov. 200373 inlägg
#3

Stort tack för hjälpen igen. Har nästan aldrig använt "hjälptabeller" innan men nu börjar jag inse fördelarna med dem : )

384 ms totalt · 4 externa anrop · v20260731065814-full.442f7a9e
124 ms — deklarationer (db)
126 ms — hämta statistik (db)
128 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)