如何编写mysql查询?

hof1towb  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(339)

mysql表中的原始数据是:

  1. APP EVENT
  2. app1 clk
  3. app1 req
  4. app2 clk
  5. app1 imp
  6. app2 req

现在,我想得到以下结果,统计每个应用程序的事件数

  1. APP clk imp req
  2. app1 1 1 1
  3. app2 1 0 1

如何编写sql查询来实现这一点?

cuxqih21

cuxqih211#

您可以按应用程序分组,然后对事件使用条件计数。

  1. SELECT
  2. APP,
  3. COUNT(CASE WHEN EVENT = 'clk' THEN 1 END) AS clk,
  4. COUNT(CASE WHEN EVENT = 'imp' THEN 1 END) AS imp,
  5. COUNT(CASE WHEN EVENT = 'req' THEN 1 END) AS req
  6. FROM yourtable
  7. GROUP BY APP
  8. ORDER BY APP;

这里是sql fiddle示例

tquggr8v

tquggr8v2#

您可以尝试使用聚合函数条件

  1. SELECT APP,
  2. SUM(CASE WHEN EVENT ='clk' THEN 1 ELSE 0 END) clk,
  3. SUM(CASE WHEN EVENT ='imp' THEN 1 ELSE 0 END) imp,
  4. SUM(CASE WHEN EVENT ='req' THEN 1 ELSE 0 END) req
  5. FROM T
  6. GROUP BY APP
toiithl6

toiithl63#

mysql提供了条件聚合的简写,因此您可以:

  1. select app,
  2. sum(EVENT = 'clk') as clk,
  3. sum(EVENT = 'imp') as imp,
  4. sum(EVENT = 'req') as req
  5. from table t
  6. group by app;

这把小提琴显示它在工作

相关问题