我希望根据其他列的值选择一列。用例是我对复杂表达式的中间值感兴趣。
就像是:
SELECT 1.0 as avg, 2.0 as stdev, 100.0*stdev/avg as cv;
使用 CTE 执行此操作的“正确”方法是吗?
我希望根据其他列的值选择一列。用例是我对复杂表达式的中间值感兴趣。
就像是:
SELECT 1.0 as avg, 2.0 as stdev, 100.0*stdev/avg as cv;
使用 CTE 执行此操作的“正确”方法是吗?
目前,我只有一个备份文件 IMTDB.bak,它与数据库本身在同一个 HDD 上。我想通过本质上“复制”到另一个磁盘来增加此数据库备份的冗余,但我收到错误“服务器备份失败,媒体已格式化以支持 2 个媒体系列”。我认为这意味着当我创建备份时,它只是将备份放在一个驱动器上,我无法追溯添加更多。我想将备份迁移到另一个驱动器(实际上只是将其复制过来),但我不想删除当前备份来执行此操作。
我该怎么办?将 IMTDB.bak 复制到另一个驱动器上的文件夹中是否安全?
作为一个天真的家伙,我让我的数据库变满(10GB 是 SQL Server Express 的最大值),现在决定删除列以回收空间。我从 ~50M 行表中删除了 10 列以节省空间,但即使在删除它们之后,我仍然收到“错误 1011:无法为数据库分配新页面 ...”。
我无法收缩数据库,无法重新索引数据库,无法重建索引,无法添加文件组,或类似的东西。我有 97% 的碎片(即使在对我的硬盘进行碎片整理之后),我觉得我已经没有选择了。即使尝试运行 an 也会ALTER INDEX .. REBUILD WITH (SORT_IN_TEMPDB = ON)
给出相同的错误消息。
我现在有什么选择?我应该只迁移到不同的数据库(MYSQL、PostgreSQL)吗?
我将使用我在不久的将来编写的应用程序运行大量模拟,但围绕此设计我的数据库时遇到了麻烦。
这是它的工作原理。每个模拟有 6 个可以变化的参数,每个参数有大约 10 个选项。所以我们有大约 100 万个排列以某种方式存储在数据库中。我能想到的最简单的方法是为每个参数设置一列,并为我的主键 (ExperimentID) 添加一列。然后,我可以通过执行一个简单的操作直接访问给定实验的参数
SELECT * FROM Parameters WHERE ExperimentID = (givenID)
每个参数都将作为一个 int 存储在数据库中,我的应用程序将在运行时将其解释为必要的参数。
一种更复杂但我认为更快的方法是利用二进制移位的速度。我没有直接存储参数,而是将有关每个参数的信息存储在 4 位无符号整数中。我实际上并不知道整数是如何在数据库中存储的(二进制方式),所以这是主要的障碍。
关于在这种情况下该怎么做的任何建议?此外,我还没有这些列,所以如果我决定使用第一个选项,我将如何使用一组参数的所有排列来填充表格?
我正在创建一个模拟结果数据库,并试图以正确的方式进行。我试图展示数据之间的关系,以确保没有多余的东西被扔进去。
我目前的结构是这样的:
实验
主键:SimulationID
表:
与这些表相关的外键:cycle_count
每个表都包含变量的主键、外键和值。
因此,对于给定的实验,它运行了这么多周期(它运行的周期数因模拟而异)。我们在模拟的每个周期记录数据。
我已经制作了一个名为measurement
,sampling_rate
等的表,但不确定如何命名这些列。也应该称为measurement
,sampling_rate
等吗?或者我应该只Value
用作列名?
这是一个带有示例日志的电子表格,用于演示我正在使用的内容。所有这些数据都将归档在一个SimulationID
.
此外,任何关于如何最好地将数据库设计为正常/最佳实践的提示将不胜感激。
我有一个查询返回技术人员表和他们完成的工单数量。问题是有时技术人员使用他们的全名输入,有时他们使用他们的用户 ID 输入。我希望此表使用全名,并将使用 userID 的记录与与其全名对应的记录合并。UserID 以'FirstInitial' + 'LastName'
or的形式出现'$FirstName' + '$LastInitial'
,其中 + 是字符串连接
我的表格示例:
Maddoc 74 - 229
M74 - 21
Maddoc7 - 14
John Smith - 215
jsmith - 47
johns - 19
Anna Kellog - 251
akellog - 67
annak - 14
我希望它看起来像什么:
Maddoc 74 - 264
John Smith - 281
Anna Kellog - 332
这是我当前的查询:
SELECT "RESPONDEDBY" AS Technician, COUNT("RESPONDEDBY") AS Tickets
FROM TRACKIT_DATA2.TrackItApp_1.vTASKS_BROWSE
WHERE DATEPART(m,"CLSDDATE") = DATEPART(m, {?reportingDate})
AND DATEPART(yyyy,"CLSDDATE") = DATEPART(yyyy, {?reportingDate})
AND "RESPONDEDBY" NOT IN (SELECT "RESPONDEDBY" FROM TRACKIT_DATA2.TrackItApp_1.vTASKS_BROWSE WHERE "RESPONDEDBY" = 'EmailMonitor')
GROUP BY "RESPONDEDBY"
ORDER BY COUNT("RESPONDEDBY") DESC