我有一组呼叫详细记录,根据这些记录,我应该确定每个系统每小时的平均并发活动呼叫数(精度为一分钟).如果我查询下午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) 我正在处理一个返回数值(货币)的查询.有些值是整数,显示为3,5,2等,而其他数字则显示为2.52,4.50等.
如何强制oracle始终显示小数位?
谢谢
使用int vs varbinary在性能或灵活性方面存储位掩码是否有任何优势.
出于我的目的,我将始终对这些位掩码进行读取(无写入或更新).
我正在查询数据库,并且我需要组合2位列(对于此示例,如果一个为真,则列必须为true).
就像是: Select col1 || col2 from myTable
实现这一目标的最简单方法是什么?
我有一个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工具?
我有Table1,我需要让它看起来像Table2:
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)
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) 我们当前的项目不使用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) 我有一个数据库表,其中包含唯一的字符串字段和几个整数字段.字符串字段通常为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中"硬编码")并执行它,但我不知道它是否会改进任何东西.
您有什么建议来优化这样的过程吗?
谢谢
关系表是表示多对多(m:n)关系的通用解决方案.
在最简单的形式中,它将引用两个相关表的外键组合到一个新的复合主键:
A AtoB B ---- ---- ---- *id *Aid *id data *Bid data
应该如何编制索引以在每个JOIN情况下提供最佳性能?
Aid ASC, Bid ASC)(无论如何,这是强制性的,我猜)Bid ASC, Aid ASC)的附加索引Bid ASC)的附加索引在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中这样做的正确方法是什么?
sql ×10
sql-server ×4
django ×2
oracle ×2
python ×2
algorithm ×1
bitmask ×1
formatting ×1
indexing ×1
insert ×1
integration ×1
java ×1
mysql ×1
oracle10g ×1
row-number ×1
sql-server-7 ×1
t-sql ×1