小编zea*_*ous的帖子

查找唯一的天数

我希望编写一个 SQL 查询来从 table 中查找每个员工的唯一工作日数times

*---------------------------------------*
|emp_id  task_id  start_day   end_day   |
*---------------------------------------*
|  1        1     'monday'  'wednesday' |
|  1        2     'monday'  'tuesday'   |
|  1        3     'friday'  'friday'    |
|  2        1     'monday'  'friday'    |
|  2        1     'tuesday' 'wednesday' |
*---------------------------------------*
Run Code Online (Sandbox Code Playgroud)

预期输出:

*-------------------*
|emp_id  no_of_days |
*-------------------*
|  1        4       |
|  2        5       |
*-------------------*
Run Code Online (Sandbox Code Playgroud)

我已经编写了查询sqlfiddle,它给了我expected输出,但出于好奇,有没有更好的方法来编写这个查询?我可以使用日历或理货表吗?

with days_num as  
(
  select
    *,
    case 
      when start_day = 'monday' then 1 …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

11
推荐指数
2
解决办法
1170
查看次数

在带有 ORDER BY 的子选择中使用 JSON_ARRAYAGG 会出错

使用 Oracle 19c:

我有以下查询,其中子选择(通过 链接到主选择plans1_.ID)使用该JSON_ARRAYAGG函数。

select
    ... , /* Other columns... */
    (SELECT
        json_arrayagg(json_object('sentDate' value mh.sent_date,
                                  'sentByEmail' value mh.send_by_email,    
                                  'sentBy' value mh.sent_by,
                                  'sentByName' value mh.sent_by_name,
                                  'sentToEmail' value mh.sendee_email) RETURNING CLOB) 
        from mail_history_t mh 
        where mh.plan_id = plans1_.id and mh.is_current_status = 'Y' 
        /*---This is the problem block: If I remove this ORDER BY the query works---*/
        order by mh.sent_date desc 
    ) as col_33_0_, 
    /* ... */

    from TABLE_T table0_ 
    left outer join PLANS_T plans1_ 
        on table0_.SOME_ID=plans1_.SOME_ID
    where …
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle19c

4
推荐指数
1
解决办法
1766
查看次数

Pandas Dataframe - 将字符串拆分为多列

我是 Pandas 框架的新手,我已经进行了足够的搜索来解决我的问题,但在网上没有得到太多帮助。

我有一个如下所示的字符串列,我想将其转换为单独的列。我的问题是我试过拆分它,但它没有按照我需要的方式给我输出。

*-----------------------------------------------------------------------------*
|  Total Visitor                                                              |
*-----------------------------------------------------------------------------*
|  2x Adult, 1x Adult + Audio Guide                                           |
|  2x Adult, 2x Youth, 1x Children                                            | 
|  5x Adult + Audio Guide, 1x Children + Audio Guide, 1x Senior + Audio Guide |
*-----------------------------------------------------------------------------*
Run Code Online (Sandbox Code Playgroud)

这是我用来分割字符串但没有给我预期输出的代码。

df = data["Total Visitor"].str.split(",", n = 1, expand = True)
Run Code Online (Sandbox Code Playgroud)

拆分字符串后,我的预期输出应如下表所示:

*----------------------------------------------------------------------------------------------------------------*
|  Adult    | Adult + Audio Guide    | Youth   | Children    | Children + AG        | Senior + AG                                                                       
*----------------------------------------------------------------------------------------------------------------* …
Run Code Online (Sandbox Code Playgroud)

python pandas

3
推荐指数
1
解决办法
445
查看次数

PostgresSQL:间隔字段值超出范围

我是 PostgresSQL 的新手,我正在运行一个查询,我正在查找上周内的活动,但它抛出了超出范围的错误

Postgres SQL:

select *
from myTable
where order_time > '2018-12-04 18:22:26' - INTERVAL '7 day'
Run Code Online (Sandbox Code Playgroud)

错误:

IntervalFieldOverflow: ERROR:  interval field value out of range: "2018-12-04 18:22:26"
Run Code Online (Sandbox Code Playgroud)

版本:PostgresSQL 9.6

我尝试通过在线搜索来解决我的问题,但没有得到太多帮助。

postgresql

3
推荐指数
1
解决办法
3403
查看次数

如何将具有相同ID的行合并到一个列表中

我怎样才能使下表像列表一样。

Id   Name
1    Tim
1    George
2    Rachael
3    Mark
3    Blake
Run Code Online (Sandbox Code Playgroud)

我希望结果是这样的

Id    Name
1     Tim,George
2     Rachael
3     Mark,Blake
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

sql m dax powerquery powerbi

3
推荐指数
1
解决办法
7037
查看次数

在 pgadmin EXPLAIN ANALYZE 中,独占与包含

如下所示,我尝试基于 Pgadmin 的 EXPLAIN ANALYZE 功能来优化我的查询。有经验的人可以告诉我计时中的包容性和排他性之间的区别吗?为什么 EXCLUSIVE 可以是负数?谢谢

在此输入图像描述

sql postgresql pgadmin-4

3
推荐指数
1
解决办法
2617
查看次数

雪花 - 在两个数组之间返回不同(不相似)的值

在查看 Snowflake 文档后,我发现调用的函数array_intersection(array_1, array_2)将返回两个数组之间的公共值,但我需要显示数组中不存在任何一个数组中的值。

示例 1:

假设我的表中有以下两个数组

array_1 = ['a', 'b', 'c', 'd', 'e']
array_2 = ['a', 'f', 'c', 'g', 'e']
Run Code Online (Sandbox Code Playgroud)

我的查询:

select
  array_intersection(array_1, array_2)
from myTable
Run Code Online (Sandbox Code Playgroud)

电流输出:

['a', 'c', 'e']
Run Code Online (Sandbox Code Playgroud)

但我期望输出为:

['f', 'g']
Run Code Online (Sandbox Code Playgroud)

示例 2:

假设我的表中有以下两个数组

array_1 = ['u', 'v', 'w', 'x', 'y']
array_2 = ['u', 'v', 'i', 'x', 'k']
Run Code Online (Sandbox Code Playgroud)

我的查询:

select
  array_intersection(array_1, array_2)
from myTable
Run Code Online (Sandbox Code Playgroud)

电流输出:

['u', 'v', 'x']
Run Code Online (Sandbox Code Playgroud)

但我期望输出为:

['w', 'y', 'i', 'k']
Run Code Online (Sandbox Code Playgroud)

如何在雪花中做到这一点?有什么建议?

snowflake-cloud-data-platform

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

查找给定数字频率的中位数

想要编写一个 SQL Server 查询来查找给定数字频率的中位数。

桌子:

+----------+-------------+
|  number  |  frequency  |
+----------+-------------|
|  2       |  7          |
|  3       |  1          |
|  5       |  3          |
|  7       |  1          |
+----------+-------------+
Run Code Online (Sandbox Code Playgroud)

在这个表中,数字的2, 2, 2, 2, 2, 2, 2, 3, 5, 5, 5, 7中位数是(2 + 2) / 2 = 2

我使用递归 CTE sqlfiddle创建了以下查询,是否有更好的方法来更高效地编写这个查询?

我的解决方案:

/* recursive CTE to generate numbers with given frequency */

with nums as
(
    select
        number,
        frequency
    from numbers

    union all …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

0
推荐指数
1
解决办法
2148
查看次数

为引用来自 SQL Plus 中不同表的多个主键的外键添加约束?

我是学习 SQL 的初学者,在实现这个概念时遇到了麻烦。

假设您创建了以下三个表:

CREATE TABLE dogOwner(
 ownerNo VARCHAR(8) CONSTRAINT ownerNo_pk1 PRIMARY KEY,
 ownerName VARCHAR(10)
);

CREATE TABLE catOwner(
 ownerNo VARCHAR(8) CONSTRAINT ownerNo_pk2 PRIMARY KEY,
 ownerName VARCHAR(10)
);

CREATE TABLE petsAdopted(
 petNo VARCHAR(8) CONSTRAINT petNo_pk PRIMARY KEY,
 ownerNo VARCHAR(8) CONSTRAINT ownerNo_fk1 REFERENCES dogOwner(ownerNo)
                    CONSTRAINT ownerNo_fk2 REFERENCES catOwner(ownerNo)
);
Run Code Online (Sandbox Code Playgroud)

你如何正确地为外键 ownerNo 创建约束,它从另外两个表中引用 ownerNo?

sql oracle ddl foreign-keys

0
推荐指数
1
解决办法
37
查看次数