小编ype*_*eᵀᴹ的帖子

计算组内的中值

我有一个存储过程,它计算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

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

QUERY - 透视多列,可变行数

我有一张看起来像这样的表:

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 种成分。我想像这样显示这个表中的数据: …

sql-server pivot sql-server-2008-r2

6
推荐指数
1
解决办法
5万
查看次数

具有空值的两行合并为没有空值的一行

我已经从表中获取了这样的记录:

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)

任何人都可以帮我解决这个问题,在此先非常感谢

sql-server

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

如何获取序列列的序列名称

据我所知,此查询应显示串行列的新值的表达式:

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)

它大部分时间都有效,但如果我重命名序列,新名称不会反映在查询结果中 - 它继续显示序列的原始名称。任何想法为什么?

postgresql sequence greenplum

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

查询时不使用索引

我有这个查询(如下),当它应该使用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)

mysql index mysql-5.5

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

使用单表进行 MtM 关系的数据库设计有哪些优势?

支持我们软件产品的数据库具有如下表设计:

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)

database-design orm

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

CTE 错误(nvarchar 到数字)

我正在使用 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)

sql-server cte

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

日期时间列与日期 + 时间列

我正在为一个保存大量日志的系统设计一个表。我们正在查看每秒大约 200 个条目。

我们使用的是 SQL-Server 2012 企业版。

我有一个关于将一Datetime列分成两列的问题,Date并且Time.

我在问题背后的想法。我会说一旦数据存储在数据库中,大多数搜索将基于每天,给我今天/1 月 10 日的所有结果。

现在我仍然需要存储时间。因此,如果我将其存储为datetime,则在执行此查询时,sql 将不得不加载整个datetime字段,然后只查看一半的数据。

因此,通过可能将日期存储在其自己的字段中,它可以只查看它需要的内容。

但另一方面,如果您确实在查询中指定了时间,则它现在必须检查两列的值。

因此,我希望 SQL Gurus 提供关于哪个选项对大型数据库的查询具有更好的性能的输入。

据我所知datetime,可以高度优化并且是比分解更好的解决方案。

sql-server t-sql sql-server-2012 datetime date

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

在 sql server 2008R2 中错误更新语句后如何回滚?

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。

sql-server sql-server-2008-r2

5
推荐指数
2
解决办法
16万
查看次数

将表格转换为第三范式

我有一个这样的表:L(A, B, C, D, E)功能依赖项是:

AB -> CDE 
C -> D 
D -> B 
D -> E 
Run Code Online (Sandbox Code Playgroud)

我需要将此表转换为 3NF。我认为它甚至不在 2NF 中。我找到了 3 个候选键:

  1. 第一个显然是 AB
  2. D->B我们可以更改AB->CDEAD->BCE. 所以另一个候选键是AD
  3. 使用类似的逻辑,我们得到另一个密钥 AC

(我不确定我这样做是否正确)。

D -> E(我认为有更多类似的依赖项)我假设该表不在 2NF 中。拆分此表以获得 3NF 的正确方法是什么?

normalization relational-theory

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