小编GMB*_*GMB的帖子

使用常量值向 sql 查询结果添加额外列

我有一个简单的查询,它返回 id 列表..

例如。select id from users;

这会返回 ids 列表,但我需要另一个 x 列(不适用于用户表或数据库中的任何其他表)以及我将给出的一些常量值。我可以在查询id后用Js或其他语言实现这一点。但只需要知道是否有任何方法可以在查询本身中做到这一点。

当前结果:

id
---
1
2
3
Run Code Online (Sandbox Code Playgroud)

预期结果:

id      some_new_column         
---          ---
1            abc
2            abc
3            abc
Run Code Online (Sandbox Code Playgroud)

其中some_new_columnabc,两者都应在查询中提供。

不确定这是否可能。任何线索/帮助表示赞赏。

mysql sql database string sequelize.js

8
推荐指数
1
解决办法
9974
查看次数

MySQL 一对多转 JSON 格式

我有两个 MySQL 表:

User (id, name)
Sale (id, user, item)
Run Code Online (Sandbox Code Playgroud)

Sale(user)的外键在哪里User(id),所以这是一对多的关系(一个用户可以进行多次销售)。

我试图从数据库中获取它并以 JSON 格式为多个用户返回它,所以它看起来像这样:

[
  {
    "id": 1,
    "name": "User 1",
    "sales": [
      {
        "id": 1,
        "item": "t-shirt"
      },
      {
        "id": 2,
        "item": "jeans"
      }
    ]
  },
  {
    "id": 2,
    "name": "User 2",
    "sales": [
      {
        "id": 3,
        "item": "sweatpants"
      },
      {
        "id": 4,
        "item": "gloves"
      }
    ]
  }
]
Run Code Online (Sandbox Code Playgroud)

其中“销售”实体嵌套在其相应“用户”的实体中。

所以问题是,从数据库查询并将其转换为 JSON 的最佳方法是什么?我可以为所有用户运行查询,然后遍历每个用户并运行查询以获取他们的销售额,但这很慢。或者,我可以在用户和销售之间进行外部连接,然后在代码中将其解析为 JSON 格式,但这会从数据库发送多余的信息(包括每个销售的整个用户数据集),并且需要循环遍历所有数据代码。有没有方便的方法来做到这一点?顺便说一下,我使用的是 Python 3.7。

python mysql arrays json left-join

7
推荐指数
1
解决办法
4680
查看次数

在 Mysql 中从数组内的 Json 数据中获取值

我们将信息保存在一个 json 列中,该列包含一个数组中的 json 数据。

数据结构:

[
    {
        "type":"automated_backfill",
        "title":"Walgreens Sales Ad",
        "keyword":"Walgreens Sales Ad",
        "score":4
    },
    {
        "type":"automated_backfill",
        "title":"Nicoderm Coupons",
        "keyword":"Nicoderm Coupons",
        "score":4
    },
    {
        "type":"automated_backfill",
        "title":"Iphone Sales",
        "keyword":"Iphone Sales",
        "score":3
    },
    {
        "type":"automated_backfill",
        "title":"Best Top Load Washers",
        "keyword":"Best Top Load Washers",
        "score":1
    },
    {
        "type":"automated_backfill",
        "title":"Top 10 Best Cell Phones",
        "keyword":"Top 10 Best Cell Phones",
        "score":1
    },
    {
        "type":"automated_backfill",
        "title":"Tv Deals",
        "keyword":"Tv Deals",
        "score":0
    }
]
Run Code Online (Sandbox Code Playgroud)

我们正在尝试什么:

SELECT id, ad_meta->'$**.type' FROM window_requests
Run Code Online (Sandbox Code Playgroud)

返回:

在此处输入图片说明

我们希望将每种类型作为行,我认为这只能通过存储过程实现,返回整列,然后在每一行上运行循环并返回数据...

或者你能想到更好的解决方案吗?

更新架构:

或者我们应该更改我们的数据库并将信息保存在单独的表中而不是 json …

mysql sql arrays json unnest

7
推荐指数
1
解决办法
9823
查看次数

MySQL:计算按列分组的值的中位数

我有下表:

+------------+-------+
| SchoolName | Marks |
+------------+-------+
| A          |    71 |
| A          |    71 |
| A          |    71 |
| B          |   254 |
| B          |   135 |
| B          |   453 |
| B          |   153 |
| C          |   453 |
| C          |   344 |
| C          |   223 |
| B          |   453 |
| D          |   300 |
| D          |   167 |
+------------+-------+
Run Code Online (Sandbox Code Playgroud)

这是按学校名称分组的平均分:

+------------+------------+
| SchoolName | avg(Marks) …
Run Code Online (Sandbox Code Playgroud)

mysql sql average median window-functions

7
推荐指数
1
解决办法
3868
查看次数

为什么 Postgres EXPLAIN ANALYZEexecution_time 与我运行实际查询时不同?

我正在使用数据库客户端来测试。

使用EXPLAIN ANALYZE

Hash Join  (cost=5.02..287015.54 rows=3400485 width=33) (actual time=0.023..1725.842 rows=3327845 loops=1)
  Hash Cond: ((fact_orders.financial_status)::text = (include_list.financial_status)::text)
  CTE include_list
    ->  Result  (cost=0.00..1.77 rows=100 width=32) (actual time=0.003..0.004 rows=4 loops=1)
          ->  ProjectSet  (cost=0.00..0.52 rows=100 width=32) (actual time=0.002..0.003 rows=4 loops=1)
                ->  Result  (cost=0.00..0.01 rows=1 width=0) (actual time=0.000..0.000 rows=1 loops=1)
  ->  Seq Scan on fact_orders  (cost=0.00..240253.85 rows=3400485 width=38) (actual time=0.006..551.558 rows=3400485 loops=1)
  ->  Hash  (cost=2.00..2.00 rows=100 width=32) (actual time=0.009..0.009 rows=4 loops=1)
        Buckets: 1024  Batches: 1  Memory Usage: 9kB
        ->  CTE Scan on …
Run Code Online (Sandbox Code Playgroud)

sql postgresql query-optimization explain sql-execution-plan

7
推荐指数
1
解决办法
2770
查看次数

PostgreSQL 中 INNER JOIN 中字段的 SUM

我有一个这样的查询:

SELECT      pt.id, 
            pt.plan_name,
            pt.product_disc_amt,
            pt.product_disc_perc, 
            SUM(ac.premium_amount) AS premium,
            ac.id AS ac_id 
FROM        product pt 
INNER JOIN  age_classification ac 
ON          ac.p_id = pt.id 
WHERE       pt.medical_coverage_for = 'dependents_only'
OR          (ac.relationship = 'child' AND ac.age_from::int <= 3 AND ac.age_to::  int >= 3  
AND         ac.gender = 'female' AND ac.marital_status = 'single') 
OR          (ac.relationship = 'child' AND ac.age_from::int <= 4 AND ac.age_to::  int >= 4  
AND         ac.gender = 'male' AND ac.marital_status = 'single' ) 
OR          (ac.relationship = 'child' AND ac.age_from::int <= 2 
AND         ac.age_to:: …
Run Code Online (Sandbox Code Playgroud)

sql postgresql join group-by

7
推荐指数
1
解决办法
245
查看次数

Postgresql 11 - 按整数数组索引排序

我想根据数组中的 id 顺序在数据库中列出我的产品

我的阵列

'{3,2,1}'::int[]
Run Code Online (Sandbox Code Playgroud)

例如

SELECT id FROM product WHERE id = ANY ('{3,2,1}'::int[]);
Run Code Online (Sandbox Code Playgroud)

此查询获取按产品 id 排序的产品

|id|
|1 |
|2 |
|3 |
Run Code Online (Sandbox Code Playgroud)

但我想列出按数组 id 的索引排序的产品。像这样 :

|id|
|3 |
|2 |
|1 |
Run Code Online (Sandbox Code Playgroud)

是否有可能做到这一点 ?我能怎么做 ?

sql arrays postgresql sql-order-by postgresql-11

7
推荐指数
2
解决办法
2593
查看次数

如何从 PostgreSQL 数组列中获取唯一值

我正在尝试提取一列数组的不同值。

例如,如果我有两行:

{jonathan,michelle}
{jonathan,michael}
Run Code Online (Sandbox Code Playgroud)

输出应该是:

{jonathan,michelle,michael}
Run Code Online (Sandbox Code Playgroud)

输出可以是数组或“虚拟列”,这不是问题。

sql arrays postgresql group-by distinct

7
推荐指数
2
解决办法
4546
查看次数

Mysql提取json数据并搜索多个值

嗨,我有汽车列表网站,我想从 JSON 列中过滤多个值 data

我的数据库表如下所示:

id | label    | data
---|----------|---------------------------------
 1 | "test 1" | {"Year":"2014","Gear":"Auto"}
 2 | "test 2" | {"Year":"2010","Gear":"Manual"}
 3 | "test 3" | {"Year":"2009","Gear":"None"}
Run Code Online (Sandbox Code Playgroud)

例如,我想按齿轮过滤,“自动”或“手动”:

SELECT * FROM test WHERE 
JSON_EXTRACT(data, "$.Year") in (2010,2014) AND
JSON_EXTRACT(data, "$.Gear") in ("Auto","Manual")
Run Code Online (Sandbox Code Playgroud)

当我添加过滤器时,查询返回零结果Gear,但过滤器Year工作正常。

mysql sql string json where-clause

7
推荐指数
1
解决办法
1615
查看次数

Bigquery Lag 导航功能忽略空值

我有一张表如下:

WITH
  table1 AS (
  SELECT
    TIMESTAMP '2016-10-18 2:51:45' AS ts,
    'AB4' AS packId,
    FALSE AS stat,
    'x' AS position
  UNION ALL
  SELECT
    TIMESTAMP '2016-10-18 2:54:11',
    'AB4',
    FALSE,
    'x'
  UNION ALL
  SELECT
    TIMESTAMP '2016-10-18 3:01:17',
    'AB4',
    FALSE,
    'x'
  UNION ALL
  SELECT
    TIMESTAMP '2016-10-18 3:05:42',
    'AB4',
    TRUE,
    NULL
  UNION ALL
  SELECT
    TIMESTAMP '2016-10-18 3:06:24',
    'AB4',
    FALSE,
    'x'
  UNION ALL
  SELECT
    TIMESTAMP '2016-10-18 3:06:36',
    'AB4',
    TRUE,
    'y'
  UNION ALL
  SELECT
    TIMESTAMP '2016-10-18 3:07:41',
    'AB4',
    FALSE,
    'x')
SELECT
  ts,
  packId,
  stat,
  position,
  LAG(position) …
Run Code Online (Sandbox Code Playgroud)

sql window-functions google-bigquery

7
推荐指数
1
解决办法
2138
查看次数