我有一个表名'demo',其中包含字段ID(PK),用户和带有以下数据的项目:
id user item
== ==== =====
1 anuj A
2 anuj A
3 anuj A
4 anuj B
5 anuj B
6 anuj B
7 patil A
8 patil A
9 patil A
10 rahul B
11 rahul B
12 tanmay A
13 tanmay A
现在我想写一个查询,它会给我这样的结果:
User Count of A Count of B
==== ========== ===========
anuj 3 3
patil 3 0
rahul 0 2
tanmay 2 0
基本上这可能吗?我试过但没有成功。
答案 0 :(得分:2)
使用void radixSort(int *a, int arraySize)
{
int i, bucket[arraySize];
int maxVal = 0;
int digitPosition =1;
for(i = 0; i < arraySize; i++)
{
if(a[i] > maxVal)
maxVal = a[i];
}
int pass = 1;
while(maxVal/digitPosition > 0)
{
int digitCount[10] = {0};
for(i = 0; i < arraySize; i++)
digitCount[a[i]/digitPosition%10]++;
for(i = 1; i < 10; i++)
digitCount[i] += digitCount[i-1];
for(i = arraySize - 1; i >= 0; i--)
bucket[--digitCount[a[i]/digitPosition%10]] = a[i];
for(i = 0; i < arraySize; i++)
a[i] = bucket[i];
digitPosition *= 10;
}
}
Conditional Aggregate
汇总中的 Case statement
将生成count
或1
。由于聚合函数消除了NULL
值,因此只有满足条件时,计数才会考虑计数值
NULL
答案 1 :(得分:2)
select
user,
sum(if(item="A",1,0)) as "count of A",
sum(if(item="B",1,0)) as "count of B"
from
demo
group by user;