小编Sto*_*leg的帖子

按字段分割的频率分布

一些背景: 我有一个样本人口数据文件。数据文件中的每条记录都有一个频率权重(FIELD NAME: wgt),指示需要复制多少次记录才能获得真正的总体。数据在 Microsoft SQL 2008 R2 中设置。生成权重的频率分布以查看某种特定类型的记录是否以任何方式过度表示通常是一种很好的做法 - 从而帮助识别趋势/异常值。这个任务在 SQL 中很简单:

SELECT wgt, COUNT(*) FROM tablename 
GROUP BY wgt
Run Code Online (Sandbox Code Playgroud)

挑战: 我想根据其他值进一步分离这些频率。假设不同家庭规模的权重频率分布。实现此目的的一种方法是在上述语句中使用不同的 where 条件:

SELECT wgt, COUNT(*) FROM tablename 
WHERE household_size=x --x being the desired segment
GROUP BY wgt
Run Code Online (Sandbox Code Playgroud)

但是有没有办法用所有不同的段创建一个表?像这样的东西:

WGT |   SIZE1       SIZE2       SIZE3       SIZE4 
--------------------------------------------------
1   |    2,034      1,025       502         234 
2   |    215        253         142         23 
3   |    31         25          21          34 
4   |    7          1           3           7 
5   |    5          NULL        2           5 
6 …
Run Code Online (Sandbox Code Playgroud)

sql-server stored-procedures statistics view

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

如何使用有限的数据库空间对非常大的表进行分区?

我有一张很大的桌子。我想分区它,但我不能。

数据库大小:1TB,可用空间200GB

桌子:

  • 大小:165 列(行长 4216 KB,无 LOB),5 亿行,600GB 数据。
  • 可能的分区:每个分区一天
  • 每天/分区的行数:200 万

为了对其进行分区,我需要创建一个聚集索引。但是创建分区需要与表相同大小的可用空间,而我没有额外的600GB。

有什么选项可以让我对这个表进行分区吗?

编辑 1:

我试过将数据复制到单独的表中。

但是,当我尝试DELETE(或INSERT)将 1 天的数据放入另一个表时,出现错误,该事务日志已满并且我的事务正在回滚。我的事务日志大约是 20 GB,我不能让它更大。

sql-server-2008 sql-server partitioning

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