标签: sql

如何根据事件的日期,时间和持续时间检查SQL表中的平均并发事件?

我有一组呼叫详细记录,根据这些记录,我应该确定每个系统每小时的平均并发活动呼叫数(精度为一分钟).如果我查询下午7点到晚上8点,我应该看到该小时内(每个系统)的小时平均并发呼叫(平均每分钟的并发呼叫).

所以,我需要一种方法来检查7:00-7:01,7:01-7:02等活动呼叫的数量,然后平均这些数字.如果呼叫的时间和持续时间落在正在检查的当前分钟内,则认为呼叫处于活动状态.

更难的是它需要跨越SQL 7.0和SQL 2000(2000中的某些功能在7.0中不可用,例如GetUTCTime()),如果我能让2000工作,我会很高兴.

我可以采取什么方法解决这个问题?

我考虑在被检查的小时内循环分钟(60)并添加落在该分钟之间的呼叫计数,然后以某种方式交叉引用持续时间以确保在晚上7:00开始并且持续时间为300秒在7:04显示活跃,但我无法想象如何解决问题.我试图找出一种方法来对每一次电话进行加权,特别是那一分钟会告诉我这段时间内呼叫是否有效,但无法提出有效的解决方案.

这里的数据类型与我要查询的数据类型相同.我没有对模式的任何控制(除了可能转换数据并插入具有更合适的数据类型的另一个表之外).我提供了一些我知道有并发活动调用的示例数据.

CREATE TABLE Records(
  seconds char(10),
  time char(4),
  date char(8),
  dur int,
  system int,
  port int,
)

--seconds is an stime value. It's the difference of seconds from UTC 1/1/1970 00:00:00 to the current UTC time, we use it as an identifier (like epoch).
--time is the time the call was made.
--date is the day the call was made.
--dur is the duration of the call in seconds.
--system is the system …
Run Code Online (Sandbox Code Playgroud)

sql sql-server algorithm sql-server-2000 sql-server-7

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

总是在SQL中显示小数位?

我正在处理一个返回数值(货币)的查询.有些值是整数,显示为3,5,2等,而其他数字则显示为2.52,4.50等.

如何强制oracle始终显示小数位?

谢谢

sql oracle formatting

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

SQL Server:varbinary或int来存储位掩码?

使用int vs varbinary在性能或灵活性方面存储位掩码是否有任何优势.

出于我的目的,我将始终对这些位掩码进行读取(无写入或更新).

sql sql-server database-design bitmask

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

如何组合2位列

我正在查询数据库,并且我需要组合2位列(对于此示例,如果一个为真,则列必须为true).

就像是: Select col1 || col2 from myTable

实现这一目标的最简单方法是什么?

sql t-sql sql-server

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

如何加速Oracle中的row_number?

我有一个SQL查询,看起来像这样:

SELECT * FROM(
    SELECT
        ...,
        row_number() OVER(ORDER BY ID) rn
    FROM
        ...
) WHERE rn between :start and :end
Run Code Online (Sandbox Code Playgroud)

从本质上讲,正是ORDER BY部分减慢了速度.如果我要删除它,EXPLAIN成本会下降一个数量级(超过1000倍).我试过这个:

SELECT 
    ...
FROM
    ...
WHERE
    rownum between :start and :end
Run Code Online (Sandbox Code Playgroud)

但这并没有给出正确的结果.有没有简单的方法来加快速度?或者我是否需要花更多时间使用EXPLAIN工具?

sql oracle row-number oracle10g

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

如何调用用户定义函数以与select,group by,order by一起使用?

我有Table1,我需要让它看起来像Table2:

表格1

VisitingCount |  Date
-----------------------
      1       |  15:09
      3       |  15:10
      7       |  15:15
      1       |  15:39
      2       |  15:40
      3       |  15:47
Run Code Online (Sandbox Code Playgroud)

表2

VisitingCount |  Date
-----------------------------
     11       |  15:00-15:30
     6        |  15:30-16:00
Run Code Online (Sandbox Code Playgroud)

我写了一个sql用户定义的函数,如下所示:

create FUNCTION [dbo].[fn_GetActivityLogsArranger] (@time AS nvarchar(max))
RETURNS nvarchar(max)
AS
BEGIN
    declare @Return varchar(30)

    select @Return = 
        case 
            when @time between '15:00' and '15:30' then '15:00-15:30'
            when @time between '15:30' and '16:00' then '15:30-16:00'
            when @time between '16:00' and '16:30' then '16:00-16:30'
            when @time between …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2005

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

Java类中的SQL代码

我们当前的项目不使用Hibernate(出于各种原因),我们使用Spring的SimpleJdbc支持来执行所有数据库操作.我们有一个实用程序类,它抽象所有CRUD操作,但使用自定义SQL查询执行复杂操作.

目前,我们的查询作为字符串常量存储在服务类本身中,并被提供给由SimpleJdbcTemplate执行的实用程序.我们陷入僵局,可读性必须与可维护性相平衡.类本身内部的SQL代码更易于维护,因为它驻留在使用它的代码中.另一方面,如果我们将这些查询存储在外部文件(平面或XML)中,与转义的java字符串语法相比,SQL本身将更具可读性.

有谁遇到过类似的问题?什么是良好的平衡?您在哪里将自定义SQL保留在项目中?

示例查询如下:

private static final String FIND_ALL_BY_CHEAPEST_AND_PRODUCT_IDS = 
"    FROM PRODUCT_SKU T \n" +
"    JOIN \n" +
"    ( \n" +
"        SELECT S.PRODUCT_ID, \n" +
"               MIN(S.ID) as minimum_id_for_price \n" +
"          FROM PRODUCT_SKU S \n" +
"         WHERE S.PRODUCT_ID IN (:productIds) \n" +
"      GROUP BY S.PRODUCT_ID, S.SALE_PRICE \n" +
"    ) FI ON (FI.PRODUCT_ID = T.PRODUCT_ID AND FI.minimum_id_for_price = T.ID) \n" +
"    JOIN \n" +
"    ( \n" +
"        SELECT S.PRODUCT_ID, \n" …
Run Code Online (Sandbox Code Playgroud)

java sql integration

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

将数千条记录插入表中的最有效方法是什么(MySQL,Python,Django)

我有一个数据库表,其中包含唯一的字符串字段和几个整数字段.字符串字段通常为10-100个字符长.

每分钟左右我都有以下场景:我收到一个与表的记录结构相对应的2-10万个元组的列表,例如

[("hello", 3, 4), ("cat", 5, 3), ...]
Run Code Online (Sandbox Code Playgroud)

我需要将所有这些元组插入到表中(假设我验证这些字符串都不会出现在数据库中).为了澄清,我正在使用InnoDB,并且我有一个自动增量主键用于此表,字符串不是PK.

我的代码当前遍历此列表,因为每个元组都会创建一个具有适当值的Python模块对象,并调用".save()",如下所示:

@transaction.commit_on_success
def save_data_elements(input_list):
    for (s, i1, i2) in input_list:
        entry = DataElement(string=s, number1=i1, number2=i2)
        entry.save()
Run Code Online (Sandbox Code Playgroud)

此代码目前是我系统中的性能瓶颈之一,因此我正在寻找优化它的方法.

例如,我可以生成SQL代码,每个代码包含100个元组的INSERT命令(在SQL中"硬编码")并执行它,但我不知道它是否会改进任何东西.

您有什么建议来优化这样的过程吗?

谢谢

python mysql sql django insert

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

关系表的最佳索引策略是什么?

关系表是表示多对多(m:n)关系的通用解决方案.

在最简单的形式中,它将引用两个相关表的外键组合到一个新的复合主键:

A        AtoB     B
----     ----     ----
*id      *Aid     *id
data     *Bid     data

应该如何编制索引以在每个JOIN情况下提供最佳性能?

  1. 聚集索引over(Aid ASC, Bid ASC)(无论如何,这是强制性的,我猜)
  2. 选项#1加上(Bid ASC, Aid ASC)的附加索引
  3. 或选项#1加上(Bid ASC)的附加索引
  4. 还有其他选择吗?可能是供应商特定的东西?

sql indexing database-design

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

如何在Django中加入查询

在Django,我有两个模型:

class Product(models.Model):
    name = models.CharField(max_length = 50)
    categories = models.ManyToManyField(Category)

class ProductRank(models.Model):
    product = models.ForeignKey(Product)
    rank = models.IntegerField(default = 0)
Run Code Online (Sandbox Code Playgroud)

我将排名放在一个单独的表中,因为页面的每个视图都会导致排名发生变化,我担心所有这些写入都会使我的其他(主要是读取)查询变慢.

Products从一个简单的查询中收集了一个列表:

cat = Category.objects.get(pk = 1)
products = Product.objects.filter(categories = cat)
Run Code Online (Sandbox Code Playgroud)

我现在想要获得这些产品的所有等级.我宁愿一次性完成所有操作(使用SQL连接),并且想知道如何使用Django的查询机制来表达它.

在Django中这样做的正确方法是什么?

python sql django

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