小编Ham*_*mma的帖子

SQL 查询中的四分位数

我有一个非常简单的表格:

CREATE TABLE IF NOT EXISTS LuxLog (
  Sensor TINYINT,
  Lux INT,
  PRIMARY KEY(Sensor)
)
Run Code Online (Sandbox Code Playgroud)

它包含来自不同传感器的数千个日志。

我希望所有传感器都有 Q1 和 Q3。

我可以对每个数据进行一次查询,但最好对所有传感器进行一次查询(从一次查询中获取 Q1 和 Q3)

我认为这将是一个相当简单的操作,因为四分位数被广泛使用并且是频率计算中的主要统计变量之一。事实是,我发现了大量过于复杂的解决方案,而我希望找到一些简洁明了的解决方案。

任何人都可以给我一个提示?

编辑:这是我在网上找到的一段代码,但它对我不起作用:

SELECT  SUBSTRING_INDEX(
        SUBSTRING_INDEX(
            GROUP_CONCAT(                 -- 1) make a sorted list of values
                Lux
                ORDER BY Lux
                SEPARATOR ','
            )
        ,   ','                           -- 2) cut at the comma
        ,   75/100 * COUNT(*)        --    at the position beyond the 90% portion
        )
    ,   ','                               -- 3) cut at the comma
    ,   -1                                --    right after …
Run Code Online (Sandbox Code Playgroud)

mysql sql percentile quantile

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

使用MySqlCommand在一个查询中进行多个INSERT

我使用以下代码:

        string cmd = "INSERT INTO " + Tables.Lux() + " VALUES(NULL, @Position, @Mode, @Timer)";
        try
        {
            using (var MyConnection = new MySqlConnection(ConfigurationManager.ConnectionStrings["DataFormConnection"].ConnectionString))
            {
                using (MySqlCommand command = new MySqlCommand(cmd, MyConnection))
                {
                    MyConnection.Open();
                    command.Parameters.Add(new MySqlParameter("Position", Element.Position));
                    command.Parameters.Add(new MySqlParameter("Mode", Element.Mode));
                    command.Parameters.Add(new MySqlParameter("Timer", Element.Timer));
                    command.ExecuteNonQuery();
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

我使用上面的代码从包含100个项目的元素列表中插入数据.我想只在一个查询中添加100个值,我知道SQL语句如下所示:

INSERT INTO table (a,b) VALUES (1,2), (2,3), (3,4);
Run Code Online (Sandbox Code Playgroud)

但我不知道如何使用这种MySqlCommand.Parameters方法应用该结构.

我的目标是传递此函数List<Element>而不是仅仅传递此函数Element并创建一个INSERT语句,其中列表中的所有项目仅在一个查询中执行.有什么帮助吗?

谢谢.

c# mysql sql sql-parametrized-query sqlparameter

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

通过两个属性就地排序列表

我有一个类,有两个属性,名称和位置.我想通过Position按顺序对此列表进行排序,具有相同位置的元素应按名称排序.我正在制作静态列表,所以我想在原地工作.

到目前为止,我设法通过一个属性订购列表:

list.Sort((x, y) => x.Position.CompareTo(y.Position));
Run Code Online (Sandbox Code Playgroud)

这段代码正常工作,我有按位置排序的列表,但我不知道如何实现第二部分.我发现了这个问题,但我不明白答案.

有人可以帮帮我吗?

c# class list reorderlist

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