Sklejenie zapytania

0

Witam,

mam lekki problem z zapytaniem w MSSQL.

Chciałbym wyciągnąć z bazy nowych użytkowników - wszystkich, wewnętrznych i zewnętrznych.
Korzystam z Identity więc tabela to aspnet_Membership.
Mam już niby coś takiego:

  1. screenshot-20201026155057.png

A docelowo chciałbym grupować jeszcze miesiącami coś na zasadzie:
2. screenshot-20201026155438.png

Prymitywnie skleiłem zapytanie dzięki temu niby punkt 1 jest osiągnięty, ale z drugim nie potrafię sobie poradzić.
Póki co mam to tak:

SELECT TOP (1)
  --CONVERT(varchar(7), CreateDate, 111) as Date, 
  (SELECT COUNT(*)
  FROM [dbo].[aspnet_Membership]) as NewUsers,
  (SELECT COUNT(*)
  FROM [dbo].[aspnet_Membership]
  WHERE Email like '%firma_xxx%') as InternalUsers,
  (SELECT COUNT(*)
  FROM [dbo].[aspnet_Membership]
  WHERE Email not like '%firma_xxx%') as ExternalUsers
  FROM aspnet_Membership
  --GROUP BY CONVERT(varchar(7), CreateDate, 111)
  --ORDER BY CONVERT(varchar(7), CreateDate, 111)

W zakomentowanych fragmentach widać moje mierne próby osiągnięcia tego rezultatu (było ich o wiele wiele więcej). Czy mógłby mi ktoś doradzić jak to rozbić na poszczególne miesiące?

1

Tu są w rzeczywistości trzy niezależne kwerendy, po pierwsze samo w sobie jest nieoptymalne, a teraz wychodzi, że nierozszerzalne.

Dam ci wędkę do rozwiązania

select ... 
sum(case when Email like '%firma_xxx%') then 1 else 0 end) as wewnetrzni,
...
order by year(CreateDate), month(CreateDate)
group by year(CreateDate), month(CreateDate)

Rybę sobie złów sam.

0
AnyKtokolwiek napisał(a):

Tu są w rzeczywistości trzy niezależne kwerendy, po pierwsze samo w sobie jest nieoptymalne, a teraz wychodzi, że nierozszerzalne.

Dam ci wędkę do rozwiązania

select ... 
sum(case when Email like '%firma_xxx%') then 1 else 0 end) as wewnetrzni,
...
order by year(CreateDate), month(CreateDate)
group by year(CreateDate), month(CreateDate)

Rybę sobie złów sam.

Dzięki, rybka złowiona

screenshot-20201027091929.png

0

To ja przedłuze wędke ;):

CONVERT(varchar(7),CreateDate, 126) 

1 użytkowników online, w tym zalogowanych: 0, gości: 1