查询-计算具有相同列的两个DB表之间的差异

  • 本文关键字:两个 DB 之间 计算 查询 sql
  • 更新时间 :
  • 英文 :


如何使用查询计算具有相同列的两个DB表之间的差异?它们都有"app"、"installs"one_answers"usage"列。提前谢谢。

我的不工作查询

WITH apps AS (
SELECT app, installs_curr, usage_curr FROM (
SELECT app, installs AS installs_curr, usage AS usage_curr
FROM e5a.apps_2020_07
)
SELECT app, installs_prev, usage_prev FROM (
SELECT app, installs AS installs_prev, usage AS usage_prev
FROM e5a.apps_2020_06
)
)
SELECT app, installs_curr – installs_prev AS installs_delta, usage_curr – usage_prev AS usage_delta FROM apps
ORDER BY usage_delta DESC
**TABLE e5a.apps_2020_07**
app   installs usage 
snap  20       10
**TABLE e5a.apps_2020_06**
app   installs usage 
snap  12       8

**Result through calculation**
app   installs usage 
snap  8       2

这取决于您希望如何处理一个表中的值,而不是另一个表。一个好的起点是join:

SELECT a7.app,
(a7.installs - a6.installs) AS installs_diff,
(a7.usage - a6.usage) AS usage_diff
FROM e5a.apps_2020_07 a7 JOIN
e5a.apps_2020_08 a6
ON a7.apps = a6.apps;

这只包括两个表中的应用程序。

您应该修复您的数据模型,以便只有一个以月份为列的表。

假设App是主键,那么您可以简单地减去:

SELECT a.app, a.installs - b.installs installs_curr, a.usage - b.usage  AS usage_curr
FROM e5a.apps_2020_07 a inner join e5a.apps_2020_06 b on (a.app = b.app) 

最新更新