我搜索了很多主题并没有找到答案,或者问题太复杂了.好吧 这是我的第一个问题.这是SQL
SELECT parent.*,
(
SELECT COUNT(*)
FROM child
WHERE parent.id = child.parent_id
)
FROM parent
Run Code Online (Sandbox Code Playgroud)
如何在sqlalchemy中执行此子句?
WHERE ui.invited_by = u.id
Run Code Online (Sandbox Code Playgroud)
可以在收藏中复制吗?sql表达式?PS我知道它可以通过group_by来完成.但我需要通过子查询.
谢谢.
我有一块SQL(你认为)不会编译,而是删除目标表中的所有行.
考虑这个设置:
create table TableA (ColumnA varchar(200));
create table TableB (ColumnB varchar(200));
insert TableA values ('A'),('B'),('C');
insert TableB values ('A');
Run Code Online (Sandbox Code Playgroud)
然后是以下sql:
--Returns all rows from TableA
select * from TableA;
--Does not error (ColumnA does not exist on TableB)
delete TableA where ColumnA in (select ColumnA from TableB)
--No Rows are returned
select * from TableA;
Run Code Online (Sandbox Code Playgroud)
上面的delete语句会导致所有行被删除TableA,而不是ColumnA在其中不存在的错误TableB
这里有一个SQL小提琴:http ://www.sqlfiddle.com/#!3/9d883 /6
看来这个ColumnA来自TableA正在被接收,但预计它将"超出范围".
为什么是这样?
我有一张员工桌子和EmployeeCourseStatus桌子.
我想显示每个员工的列表,其中包含已完成的课程数(status = "CMP").
我有以下相关子查询,导致以下错误:
var query = (from emp in Employee
join adr in EmployeeAddress on emp.id = adr.EmployeeID
select new
{
id = emp.id,
name=emp.name,
country=adr.country,
CompletedCourseCount = (from c in employeeCourseStatus where c.empid = emp.id && c.status == "CMP" select c.id).count()
}
Run Code Online (Sandbox Code Playgroud)
错误:
仅支持Premitive类型.
等效的SQL子查询将是 -
Select emp.id
, emp.name
, adr.Country
, CompletedCourseCount = (select count(id) from EmployeeCourseStatus where id = emp.id and status = "CMP")
from Employee emp
JOIN employeeaddress adr …Run Code Online (Sandbox Code Playgroud) 我试图在Sybase ASE 12上使用建议的查询,它抱怨语法错误.
SELECT
item,
( SELECT TOP 1 tags.tag
FROM #tags tags
LEFT JOIN t o
ON tags.tag = o.tag
AND o.item_id = n.item_id
WHERE o.tag IS NULL
ORDER BY tags.tag
) 'tag',
value
FROM
t_new n
Run Code Online (Sandbox Code Playgroud)
错误: Incorrect syntax near the keyword 'top'.
但是,当我用MAX()替换(TOP 1 tag... ORDER BY tag)时,同样的查询有效:
SELECT
item,
( SELECT max(tags.tag)
FROM #tags tags
LEFT JOIN t o
ON tags.tag = o.tag
AND o.item_id = n.item_id
WHERE o.tag IS NULL …Run Code Online (Sandbox Code Playgroud) 我正在通过SQLZOO" SELECT教程中的SELECT ",这是完成工作的一个查询(任务7)
世界(名称,大陆,地区,人口,gdp)
SELECT w1.name, w1.continent, w1.population
FROM world w1
WHERE 25000000 >= ALL(SELECT w2.population FROM world w2 WHERE w2.continent=w1.continent)
Run Code Online (Sandbox Code Playgroud)
我的问题是关于此类查询的有效性.子查询将针对主查询的每一行(国家)运行,从而重复地重新填充给定大陆的ALL列表.
我正在尝试对远程2000服务器运行查询; 但是本地服务器生成的查询不正确,导致远程服务器返回错误:
列前缀"Tbl1002"与查询中使用的表名或别名不匹配.
跟踪远程服务器时,您可以看到该sp_cursorprepexec批处理实际上是无效的SQL; 它引用了一个Tbl1002不存在的dervied表.
我在本地服务器上运行的查询是:
SELECT
P.Code, P.Name AS PositionName, P.CompCommitteeMember,
( SELECT COUNT(*)
FROM Employees E
WHERE E.PositionID = P.PositionID
) AS EmployeeCount
FROM Positions P
WHERE P.PositionID = '{D1B0912D-B1A5-11D4-BBDD-0004ACC5B8A7}'
Run Code Online (Sandbox Code Playgroud)
其中Employees和Positions是仅从链接服务器中选择的视图.为了消除这种混淆,我们将消除视图 - 并直接使用四部分命名:
SELECT
P.Code, P.Name AS PositionName, P.CompCommitteeMember,
( SELECT COUNT(*)
FROM WCLHR.CasinoHR.dbo.Employees E
WHERE E.PositionID = P.PositionID
) AS EmployeeCount
FROM WCLHR.CasinoHR.dbo.Positions P
WHERE P.PositionID = '{D1B0912D-B1A5-11D4-BBDD-0004ACC5B8A7}'
Run Code Online (Sandbox Code Playgroud)
并且查询仍然失败:
列前缀"Tbl1002"与查询中使用的表名或别名不匹配.
为了消除WHERE条款中guid的任何混淆,我们将删除该 …
sql-server sql-server-2000 sql-server-2008-r2 correlated-subquery
我有3个表,表B和C通过外键引用表A. 我想在PostgreSQL中编写一个查询来获取A中的所有ID以及它们在B&C中的总出现次数.
a | b | c
-----------------------------------
id | txt | id | a_id | id | a_id
---+---- | ---+----- | ---+------
1 | a | 1 | 1 | 1 | 3
2 | b | 2 | 1 | 2 | 4
3 | c | 3 | 3 | 3 | 4
4 | d | 4 | 4 | 4 | 4
Run Code Online (Sandbox Code Playgroud)
所需输出(只是A中的id和B&C中的总数):
id | Count
---+-------
1 | 2 -- twice in B …Run Code Online (Sandbox Code Playgroud) sql postgresql aggregate-functions left-join correlated-subquery
我正在尝试确定以下查询是否存在"低成本"优化.我们已经实施了一个系统,"门票"可以获得"积分",因此可以进行排名.为了支持分析类型的查询,我们将每个票证的等级(票证可以绑定)与票证一起存储.
我发现,在规模上,更新此排名非常缓慢.我试图在一组大约20k门票的"门票"上运行下面的场景.
我希望有人可以帮助确定原因并提供一些帮助.
我们在postgres 9.3.6
这是一个简化的票证表架构:
ogs_1=> \d api_ticket
Table "public.api_ticket"
Column | Type | Modifiers
------------------------------+--------------------------+---------------------------------------------------------
id | integer | not null default nextval('api_ticket_id_seq'::regclass)
status | character varying(3) | not null
points_earned | integer | not null
rank | integer | not null
event_id | integer | not null
user_id | integer | not null
Indexes:
"api_ticket_pkey" PRIMARY KEY, btree (id)
"api_ticket_4437cfac" btree (event_id)
"api_ticket_e8701ad4" btree (user_id)
"api_ticket_points_earned_idx" btree (points_earned)
"api_ticket_rank_idx" btree ("rank")
Foreign-key constraints:
"api_ticket_event_id_598c97289edc0e3e_fk_api_event_id" FOREIGN KEY (event_id) …Run Code Online (Sandbox Code Playgroud) sql postgresql correlated-subquery sql-update postgresql-performance
我正在寻找一种方法来计算等于组的最小或最大项目数。我每隔几天收到一次商品,每两周输入一次。我需要查看每个EntryDate的最小值和最大值ReceivedDate,以及最小值和最大值处的项目计数。在MS Access中使用SQL。
tblItem
| EntryDate | ReceivedDate |
--------------------------------------
| 01/01/2016 | 16/12/2015 |
| 01/01/2016 | 15/12/2015 |
| 01/01/2016 | 10/12/2015 |
| 01/01/2016 | 10/12/2015 |
| 01/01/2016 | 10/12/2015 |
| 01/01/2016 | 10/12/2015 |
| 15/01/2016 | 05/01/2016 |
| 15/01/2016 | 05/01/2016 |
| 15/01/2016 | 04/01/2016 |
| 15/01/2016 | 03/01/2016 |
| 15/01/2016 | 03/01/2016 |
| 15/01/2016 | 03/01/2016 |
Run Code Online (Sandbox Code Playgroud)
SELECT tblItem.EntryDate,
Min(tblItem.ReceivedDate) AS MinReceivedDate,
Max(tblItem.ReceivedDate) AS MaxReceivedDate …Run Code Online (Sandbox Code Playgroud) 这个问题已经有了SQL的答案,我能够在R中实现该解决方案sqldf.但是,我一直无法找到实现它的方法data.table.
问题是如果数据如下所示,计算滚动日期范围内一列的不同值,例如(并直接引用链接的问题):
Date | email
-------+----------------
1/1/12 | test@test.com
1/1/12 | test1@test.com
1/1/12 | test2@test.com
1/2/12 | test1@test.com
1/2/12 | test2@test.com
1/3/12 | test@test.com
1/4/12 | test@test.com
1/5/12 | test@test.com
1/5/12 | test@test.com
1/6/12 | test@test.com
1/6/12 | test@test.com
1/6/12 | test1@test.com
Run Code Online (Sandbox Code Playgroud)
如果我们使用3天的日期,那么结果集看起来就像这样
date | count(distinct email)
-------+------
1/1/12 | 3
1/2/12 | 3
1/3/12 | 3
1/4/12 | 3
1/5/12 | 2
1/6/12 | 2
Run Code Online (Sandbox Code Playgroud)
以下是使用data.table以下命令在R中创建相同数据的代码:
date <- as.Date(c('2012-01-01','2012-01-01','2012-01-01', …Run Code Online (Sandbox Code Playgroud) sql ×6
subquery ×3
postgresql ×2
sql-server ×2
c# ×1
closures ×1
data.table ×1
left-join ×1
linq ×1
ms-access ×1
oracle ×1
r ×1
sql-update ×1
sqlalchemy ×1
sybase-ase ×1
t-sql ×1
time-series ×1