我希望编写一个 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) 使用 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) 我是 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) 我是 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
我尝试通过在线搜索来解决我的问题,但没有得到太多帮助。
我怎样才能使下表像列表一样。
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)
有任何想法吗?
在查看 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)
如何在雪花中做到这一点?有什么建议?
想要编写一个 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 的初学者,在实现这个概念时遇到了麻烦。
假设您创建了以下三个表:
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 ×6
oracle ×2
postgresql ×2
sql-server ×2
dax ×1
ddl ×1
foreign-keys ×1
m ×1
oracle19c ×1
pandas ×1
pgadmin-4 ×1
powerbi ×1
powerquery ×1
python ×1