按列值划分的小计

Subtotal for a partition by column value

如果我有这样的数据:

K1   K2  V3 
100  A   C
100  A   C
100  A   D
200  B   D
200  B   D
200  B   C

我按 K1 和 K2 对数据进行分区,因此我可以通过计数获得总数:

count(V3) over (partition by K1, K2)

产生:

K1   K2  V3  Total 
100  A   C   3
100  A   C   3
100  A   D   3
200  B   D   2
200  B   E   2

如何获取引用行中值的分区的小计?所以结果将是:

K1   K2  V3  Total Subtotal
100  A   C   3     2
100  A   C   3     2
100  A   D   3     1
200  B   D   2     1
200  B   E   2     1
 SELECT 
      K1,
      K2,
      V3, 
      count(V3) over (partition by K1, K2) as Total,
      count(V3) over (partition by K1, K2, V3) as Subtotal
FROM DataTable