- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
哦SQL,你为什么让我沮丧......
大家下午好,我又被困住了......
我有一个数据库,其中保存了表单的信息(废话),该表单可以“保存”,以便用户稍后可以返回并处理它。我需要的是找到非空字段的百分比。例如;
COL_A |COL_B |COL_C |ETC.. z %
-------------------------- z------
X | X | NULL | z 66
X | X | X | z 100
NULL | NULL | X | z 33
NULL | NULL | NULL | z 0
锦上添花?每行有 47 列需要检查。我可能会以错误的方式处理这个问题。任何帮助/提示将不胜感激。
最佳答案
您可以将CROSS APPLY
与VALUES
结合使用:
SELECT t.*, FLOOR(100 * (1.0 * sub.col)/sub.counter) AS [percentage]
FROM #tab t
CROSS APPLY (
SELECT COUNT(c), COUNT(*)
FROM (VALUES(t.col1), (t.col2), (t.col3), (t.col4), (t.col5),
(t.col6), (t.col7), (t.col8), (t.col9), (t.col10)) AS s(c)
) AS sub(col, counter)
您需要在 VALUES
子句中添加最多 47 列。
编辑:
当列具有相似的数据类型或存在隐式转换时,上述解决方案有效。如果存在没有隐式转换的数据类型,它将失败(例如 UNIQUEIDENTIFIER
和 DATETIME
。一种快速解决方法是用 CAST(t.colx AS NVARCHAR(100))
:
SELECT t.*, FLOOR(100 * (1.0 * sub.col)/sub.counter) AS [percentage]
FROM #tab t
CROSS APPLY (SELECT COUNT(c), COUNT(*)
FROM (VALUES
(CAST(t.col1 AS NVARCHAR(MAX))),
(CAST(t.col2 AS NVARCHAR(MAX))),
(CAST(t.col3 AS NVARCHAR(MAX))),
(CAST(t.col4 AS NVARCHAR(MAX))),
(CAST(t.col5 AS NVARCHAR(MAX))),
(CAST(t.col6 AS NVARCHAR(MAX))),
(CAST(t.col7 AS NVARCHAR(MAX))),
(CAST(t.col8 AS NVARCHAR(MAX))),
(CAST(t.col9 AS NVARCHAR(MAX))),
(CAST(t.col10 AS NVARCHAR(MAX)))
) AS s(c)) AS sub(col, counter)
或者可以使用IIF/CASE
(不再担心数据类型):
SELECT t.*, FLOOR(100 * (1.0 * sub.col)/sub.counter) AS [percentage]
FROM #tab t
CROSS APPLY (SELECT COUNT(c), COUNT(*)
FROM (VALUES
(IIF(t.col1 IS NULL, NULL, 1)),
(IIF(t.col2 IS NULL, NULL, 1)),
(IIF(t.col3 IS NULL, NULL, 1)),
(IIF(t.col4 IS NULL, NULL, 1)),
(IIF(t.col5 IS NULL, NULL, 1)),
(IIF(t.col6 IS NULL, NULL, 1)),
(IIF(t.col7 IS NULL, NULL, 1)),
(IIF(t.col8 IS NULL, NULL, 1)),
(IIF(t.col9 IS NULL, NULL, 1)),
(IIF(t.col10 IS NULL, NULL, 1))
) AS s(c)) AS sub(col, counter);
关于sql - 查找 SQL 中非空行的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34442590/
我喜欢在 Lisp、Python 或 JavaScript 等(通常是动态的)语言中可以使用 boolean 运算符而不是条件来编写的简洁代码,如典型的: x = someString or "def
具体来说,我将 WPF 与 MVVM 一起使用。我有一个 MainWindow,它是一个 WPF 窗口,所有操作都在其中发生。它为其属性、命令等使用相应的 View 模型类。 我在 Applicati
对于我从 VB6 移植的应用程序,我有几个关于 CLS 合规性的烦人的编译器警告,包括: Name '_AnIdentifier' is not CLS-Compliant. Type of para
Module Unix 包含 time 函数来获取自 Epoch 以来的秒数,但是是否有一种独立于平台的方式来获取相同的值并确保代码在非-Unix 部署? 最佳答案 尽管有它的名字,Unix modu
我有一个 R 函数,它试图将每个“单词”的第一个字母大写 proper = function(x){ gsub("(? proper("Māori") [1] "MāOri" 显然,RE 引擎认为
我有一个包含两列的表格。一个是 auto_increment 说 columnA 而另一个是非 auto_increment 说 columnB。我想在 columnB 中执行两种类型的插入操作: 插
我遇到了这个错误,但无法调试它 helpers.c:136:1: error: control may reach end of non-void function IDE 在最后一行中说} 这是我的
我想检查一个数组在 C 中是否按 acs 或 desc 顺序排序。这是使用 mpicc -Wall -o file file.c 编译的结果,因为我稍后在代码中使用 MPI 库。 mypractice
我想了解编译器对 C 中的非 volatile 变量有哪些限制(如果有的话)。 我不确定这是否属实,但有人告诉我,如果您有以下代码: int x; ... void update_x() { lo
我的代码在 IE 中有效,但在 Firefox 中无效。我试图让 onmousedown 和 onmouseup 事件以及 swapFE、swapEF 和 setUpTranslation 函数在 I
我的问题是.. 是否可以在非 root 设备上静默自动更新应用程序?如果设备已 Root ,则它会使用 super 用户权限更新我的应用程序,否则不会。请回复谢谢! 最佳答案 无法在非 Root 设备
阅读了 PropertyAnimator 的文档后,似乎只要满足以下条件之一,我们就可以为每个对象设置动画, 如果您有权限,请将 setter 方法添加到类中。 使用您有权更改的包装器类,并让该包装器
所以我正在制作移动应用程序,并希望使用相同的 URL 创建链接以激活 iOS 和 Android 中的内容。我已经知道该怎么做了。我对 android 的 Intent 是这样的:
这个问题很接近我的问题,但又不完全是:List minimum in Python with None? .我需要考虑到列表中所有值都为 None 的可能性。 我有一种情况,我必须在数据库中查找一些数
如何从 Pandas 数据框中获取非“NaN”值的索引? 我的数据框是 A b c 0 1 q1 1 1 2 NaN 3 2 3 q2
对于数据框 df = pd.DataFrame([[np.nan, 3.0, 7.0], [0.0, 5.0, 8.0], [0.0, 0.0, 0.0], [1.0, 3.0, np.nan], [
我在 Android 中播放视频之前对其进行解密。当我解密它时,我想将它存储在 Android 私有(private)文件夹中,这样其他应用程序和用户就无法访问它 - 我已经查找了一些看起来像这样的代
我有一个非常大的 csv 文件,如下所示: 关键词,印象 下载 juegos gratis,951 パソコン kakaku com,451 公司 session ,155 租车,356
我有一个继承自 AbstractType 的表单生成器类,我需要解析如下路径: $uri = $router->generate('blog_show', array('slug' => 'my-bl
我想从 Android 应用程序中的一个原始文本文件中读取一些文本,并在应用程序中显示该文本文件中的一行。小部件。 对于 MainActivity,我编写了一个使用以下代码获取 InputStream
我是一名优秀的程序员,十分优秀!