如何解决使用子选择和计数转换SQL查询
我需要转置此查询的结果(结果显示在图像中)以根据结果绘制直方图。 不久就是将索引1的行设置为列,并将main_objective,new_milestone,main_objective,main_milestone,main_kr设置为行。 https://i.stack.imgur.com/d2nn0.png
SELECT A.main_objective,A.new_milestone,A.main_objective,A.main_milestone,A.main_kr FROM
(SELECT
(SELECT count(label)
FROM "roads-fe-db"."track"
WHERE key IN ('newarea_option_clicked')
AND label LIKE '%option.[object_object],_objective%'
GROUP BY label
ORDER BY count(*) desc) AS new_objective,(SELECT count(label)
FROM "roads-fe-db"."track"
WHERE key IN ('newarea_option_clicked')
AND label LIKE '%option.[object_object],_milestones%'
GROUP BY label
ORDER BY count(*) desc) AS new_milestone,(SELECT count(label)
FROM "roads-fe-db"."track"
WHERE key IN ('okrboard_newobjective_clicked')
GROUP BY label
ORDER BY count(*) desc) AS main_objective,(SELECT count(label)
FROM "roads-fe-db"."track"
WHERE key IN ('milestoneboard_newmilestone_clicked')) AS main_milestone,(SELECT count(label)FROM "roads-fe-db"."track"
WHERE label LIKE '%+_new_key_result%') AS main_kr )A `
解决方法
最简单的方法可能是union all
您现有的子查询:
SELECT 'new_objective' metric,count(label) value
FROM "roads-fe-db"."track"
WHERE key = 'newarea_option_clicked' AND label LIKE '%option.[object_object],_objective%'
UNION ALL
SELECT 'new_milestone',count(label)
FROM "roads-fe-db"."track"
WHERE key = 'newarea_option_clicked' AND label LIKE '%option.[object_object],_milestones%'
UNION ALL
SELECT 'main_objective',count(label)
FROM "roads-fe-db"."track"
WHERE key = 'okrboard_newobjective_clicked'
UNION ALL
SELECT 'main_milestone',count(label)
FROM "roads-fe-db"."track"
WHERE key = 'milestoneboard_newmilestone_clicked'
UNION ALL
SELECT 'main_kr',count(label)
FROM "roads-fe-db"."track"
WHERE label LIKE '%+_new_key_result%'
注意:
-
在子查询中我看不到
GROUP BY
和ORDER BY
子句的意义,而您的输出表明它们返回了一行-我删除了它们 -
您的大多数
IN
操作可以简化为=
-
正确缩进的代码更易于编写和阅读!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。