我有一个存储过程,它计算10 分钟间隔内请求/响应周期的平均持续时间。这很有效,适合我绘制图表的需求。我接下来想做的是计算中值......我怀疑我需要一个子查询,但不知道如何完成这个。
SELECT dateadd(minute, 10 + (datediff(minute, 0, [Started]) / 10) * 10, 0) AS [Time]
,AVG(CASE WHEN Duration is null OR Duration = 0
THEN null ELSE Duration
END) AS [Mean Response Time]
FROM [Application].[Exchange] WITH (NOLOCK)
WHERE [Started] >= '24 Oct 2012' AND [Started] < '25 Oct 2012'
GROUP BY dateadd(minute, 10 + (datediff(minute, 0, [Started]) / 10) * 10, 0)
ORDER BY dateadd(minute, 10 + (datediff(minute, 0, [Started]) / 10) * …Run Code Online (Sandbox Code Playgroud) sql-server-2008 sql-server aggregate t-sql azure-sql-database
我有一张看起来像这样的表:
RECIPE VERSION_ID INGREDIENT PERCENTAGE
4000 100 Ing_1 23,0
4000 100 Ing_100 0,1
4000 200 Ing_1 20,0
4000 200 Ing_100 0,7
4000 300 Ing_1 22,3
4000 300 Ing_100 0,9
4001 900 Ing_1 8,3
4001 900 Ing_100 72,4
4001 901 Ing_1 9,3
4001 901 Ing_100 70,5
5012 871 Ing_1 45,1
5012 871 Ing_100 0,9
5012 877 Ing_1 47,2
5012 877 Ing_100 0,8
5012 879 Ing_1 46,6
5012 879 Ing_100 0,9
5012 880 Ing_1 43,6
5012 880 Ing_100 1,2
Run Code Online (Sandbox Code Playgroud)
每个配方/版本有 100 种成分。我想像这样显示这个表中的数据: …
我已经从表中获取了这样的记录:
Name Opp Bid Pro
----------------------------------------------------------------------
Admin 2 NULL NULL
Pragnya Sonal 7 NULL NULL
Priyanka Debnath 17 NULL NULL
Sanjeev Sasmal 2 NULL NULL
Subrajeet Sahoo 1 NULL NULL
Pragnya Sonal NULL 2 NULL
Pragnya Sonal NULL NULL 1
Run Code Online (Sandbox Code Playgroud)
但我想以这种格式重新排序这个表:
Admin 2 NULL NULL
Pragnya Sonal 7 2 1
Priyanka Debnath 17 NULL NULL
Sanjeev Sasmal 2 NULL NULL
Subrajeet Sahoo 1 NULL NULL
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题,在此先非常感谢
据我所知,此查询应显示串行列的新值的表达式:
select d.adsrc
from (
SELECT a.attrelid, a.attnum, n.nspname, c.relname, a.attname
FROM pg_catalog.pg_attribute a, pg_namespace n, pg_class c
WHERE a.attnum > 0
AND NOT a.attisdropped
AND a.attrelid = c.oid
and c.relkind not in ('S','v')
and c.relnamespace = n.oid
and n.nspname not in ('pg_catalog','pg_toast','information_schema')
) x
left join pg_attrdef d on d.adrelid = x.attrelid and d.adnum = x.attnum
where x.relname = 'table_name' and x.nspname = 'schema_name' and x.attname = 'column_name'
;
Run Code Online (Sandbox Code Playgroud)
它大部分时间都有效,但如果我重命名序列,新名称不会反映在查询结果中 - 它继续显示序列的原始名称。任何想法为什么?
我有这个查询(如下),当它应该使用created索引时它会一直命中表。我在这里遗漏了一些简单的东西吗?我怎样才能让它使用索引而不是表?
mysql> select version();
+------------+
| version() |
+------------+
| 5.5.27-log |
+------------+
mysql> explain SELECT `Lead`.`subid` AS `subid` FROM `leads` AS `Lead` WHERE `Lead`.`is_live` = '1' AND `Lead`.`created` >= '2012-12-13 00:00:00' AND `Lead`.`created` <= '2012-12-13 23:59:59' AND NOT (`Lead`.`subid` IS NULL) GROUP BY `Lead`.`subid`;
+----+-------------+-------+-------+-----------------------+---------+---------+------+-------+----------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+-----------------------+---------+---------+------+-------+----------------------------------------------+
| 1 | SIMPLE | Lead | range | is_live,subid,created …Run Code Online (Sandbox Code Playgroud) 支持我们软件产品的数据库具有如下表设计:
Positions
ID Name Parts
1 One 12345
2 Two 12346
3 Three 12347
Collections
ID TableID Collection
12345 1;1 1;2
12346 1;1 3;4
12347 1;2;2 5;1;2
Parts
ID Name
1 TestOne
2 TestTwo
3 TestThree
4 TestFour
5 TestFive
SubParts
1 SubPartOne
2 SubPartOne
Run Code Online (Sandbox Code Playgroud)
从上面的例子来看,每个Position都有一个 集合Parts,但是这些都被一般地(没有外键约束)映射到Collections表中。该Collections表跟踪所有对象之间的所有关系,而不仅仅是上面显示的示例表之间的关系,并且将在使用集合的任何时候使用。
这意味着如果我想获得PositionID 为 1 的及其所有部分。我必须做三个查询:
SELECT * FROM Positions WHERE ID = 1
SELECT * FROM Collections WHERE ID = 12345
Split the string …Run Code Online (Sandbox Code Playgroud) 我正在使用 CTE 将 SSRS 存储的 proc 转换为 BO 存储的 proc,因为显然我不能将临时表与 Business Objects 一起使用。
我有这个查询:
;WITH cte1
AS
(
SELECT cv.issue
, cv.customfield
, CAST(STRINGVALUE AS NUMERIC) AS priority_num
--INTO #temp_priority_val
FROM proddb1.customfieldvalue cv WITH (NOLOCK)
INNER JOIN proddb1.customfield e WITH (NOLOCK)
ON cv.CUSTOMFIELD = e.id
AND e.cfname = 'Issue Priority')
,cte2
AS
(
SELECT a.ISSUE
, f.customvalue priority_num
--INTO #temp_priority
FROM cte1 a
INNER JOIN proddb1.customfieldoption f WITH (NOLOCK)
ON a.CUSTOMFIELD = f.CUSTOMFIELD
AND CAST(a.priority_num AS NUMERIC) = f.id)
SELECT …Run Code Online (Sandbox Code Playgroud) 我正在为一个保存大量日志的系统设计一个表。我们正在查看每秒大约 200 个条目。
我们使用的是 SQL-Server 2012 企业版。
我有一个关于将一Datetime列分成两列的问题,Date并且Time.
我在问题背后的想法。我会说一旦数据存储在数据库中,大多数搜索将基于每天,给我今天/1 月 10 日的所有结果。
现在我仍然需要存储时间。因此,如果我将其存储为datetime,则在执行此查询时,sql 将不得不加载整个datetime字段,然后只查看一半的数据。
因此,通过可能将日期存储在其自己的字段中,它可以只查看它需要的内容。
但另一方面,如果您确实在查询中指定了时间,则它现在必须检查两列的值。
因此,我希望 SQL Gurus 提供关于哪个选项对大型数据库的查询具有更好的性能的输入。
据我所知datetime,可以高度优化并且是比分解更好的解决方案。
select * from aa
update aa set City='chennai',LastName='vinoth';
ID FirstName LastName City
29 Abcrdrr vinoth chennai
1 John vinoth chennai
2 Joe vinoth chennai
35 raja vinoth chennai
38 Johsdfgn vinoth chennai
Run Code Online (Sandbox Code Playgroud)
我错误地更新Lastname, City了所有行中的列。现在我想回滚到旧的表行。
使用 SQL Server 2008R2。
我有一个这样的表:L(A, B, C, D, E)功能依赖项是:
AB -> CDE
C -> D
D -> B
D -> E
Run Code Online (Sandbox Code Playgroud)
我需要将此表转换为 3NF。我认为它甚至不在 2NF 中。我找到了 3 个候选键:
ABD->B我们可以更改AB->CDE为AD->BCE. 所以另一个候选键是ADAC(我不确定我这样做是否正确)。
从D -> E(我认为有更多类似的依赖项)我假设该表不在 2NF 中。拆分此表以获得 3NF 的正确方法是什么?