Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >两个子查询的值比为零

两个子查询的值比为零
EN

Stack Overflow用户
提问于 2019-07-17 06:13:17
回答 1查看 42关注 0票数 1

对不起,标题混乱,但本质上,我有一个基本的表,购物历史,独特的购物者,访问,和项目。就像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Shopper | Visit ID | Item
John    |     A    | Milk
John    |     A    | Butter
John    |     B    | N/A
Bill    |     C    | Butter
Bill    |     D    | Eggs

本表的最终目标是使它仅由购物者获得,每一项都有一个“比率”栏,其中包括购买该项目(或任何项目)的购物者的访问百分比。对于购物历史记录,我正在寻找最终结果如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Shopper | Any Item | Milk | Butter | Eggs
John    |    50%   |  50% |   50%  |  0%
Bill    |    100%  |  0%  |   50%  |  50%

因此,我现在拥有的是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
WITH ItemCounts AS
    (SELECT
        COUNT(DISTINCT VisitID) 'Count of Visits',
        Shopper
    FROM ShoppingHistory
    GROUP BY Shopper
)
SELECT
    CastedTable.[Shopper],
    FORMAT(SUM(CastedTable.[Has Item?]) / ItemCounts.[Count of Visits], 'P2') 'Item Rate',
    FORMAT(SUM(CastedTable.[Has Milk?]) / ItemCounts.[Count of Visits], 'P2') 'Milk Rate',
    FORMAT(SUM(CastedTable.[Has Butter?]) / ItemCounts.[Count of Visits], 'P2') 'Butter Rate',
    FORMAT(SUM(CastedTable.[Has Eggs?]) / ItemCounts.[Count of Visits], 'P2') 'Egg Rate'
FROM (SELECT
    ShoppingHistory.Shopper,
    ShoppingHistory.Visit,
    CASE WHEN ShoppingHistory.VisitID <> 'N/A' THEN 1 ELSE 0 END 'Has Item?",
    MAX(CASE WHEN ShoppingHistory.Item = 'Milk' THEN 1 ELSE 0 END 'Has Milk?",
    MAX(CASE WHEN ShoppingHistory.Item = 'Butter' THEN 1 ELSE 0 END 'Has Butter?",
    MAX(CASE WHEN ShoppingHistory.Item = 'Eggs' THEN 1 ELSE 0 END 'Has Eggs?"
FROM ShoppingHistory
GROUP BY
    ShoppingHistory.Shopper,
    ShoppingHistory.VisitID,
    'Has Item?'
) CastedTable
    INNER JOIN ItemCounts
        ON CastedTable.[Shopper] = ItemCounts.Shopper
GROUP BY [Shopper]

CastedTable为每个购物者和访问者提供一行,每项一列充当标志,代表购物者在访问期间是否购买了该商品。

ItemCounts只是给我一个百分比的分母--每个购物者的总访问量。

然后,我想把每个项目的标志相加,除以总访问次数,得到他们购买该项目的访问百分比(或者,在“项目比率”情况下,他们购买任何项目的访问百分比)。

然而,我的结果看起来很奇怪。具体来说,当我打印出两个被加项目计数(和(CastedTable.Has项?))时,访问次数(ItemCounts.Count表示访问)以确保我不会发疯,我看到的是这样的情况:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Shopper | Any Item | Milk | Butter | Eggs | Sum of Item Flag | Sum of Visits
John    |    0%    |  0%  |   0%   |  0%  |       1          |       2
Bill    |    0%    |  0%  |   0%   |  0%  |       2          |       2

从本质上讲,打印国旗和访问之和栏,我看到了我所期望的,只需将国旗列除以访问栏,就能得到我想要的百分比。但是,在这些百分比列中,我只看到0%。

这是一个很大的背景,但实际上我很难弄清楚为什么我会看到这些0%。我对SQL相当陌生,似乎无法指摘我做错了什么。

任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-17 06:14:25

Server进行整数除法,因此1 / 2 =0而不是0.5。我发现最简单的解决方案是乘以1.0:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
FORMAT(SUM(CastedTable.[Has Item?]) * 1.0 / ItemCounts.[Count of Visits], 'P2') Item_Rate,
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57077973

复制
相关文章
Golang 的零值
Golang 中定义不同类型的变量,不是通过声明就是通过 make 或 new 。 未显式初始化时,内存将被赋予一个默认的初始化,该默认值便为该类型的零值。不同的类型有不同的零值。
恋喵大鲤鱼
2019/08/23
1.8K0
聊聊golang的零值
序 本文主要研究一下golang中的零值 zero value 初始化时没有赋值的变量的默认值如下: false for booleans 0 for numeric types "" for strings nil for pointers, functions, interfaces, slices, channels, and maps 访问nil实例 package main import ( "encoding/json" "fmt" ) // https://golang.g
code4it
2020/12/11
4190
聊聊golang的零值
序 本文主要研究一下golang中的零值 golang-variables-data-types-illustration.jpg zero value 初始化时没有赋值的变量的默认值如下: false for booleans 0 for numeric types "" for strings nil for pointers, functions, interfaces, slices, channels, and maps 访问nil实例 package main import ( "
code4it
2020/11/27
8750
聊聊golang的零值
【腾讯云ES】如何在 Elastic Search 中使用 Bool 查询组合多个子查询
Elasticsearch 是一种流行的开源搜索和分析引擎,广泛用于全文搜索、实时分析和日志管理。 Elasticsearch 建立在 Apache Lucene 搜索引擎库之上,以其强大而高效的搜索功能以及跨多个分布式节点水平扩展的能力而闻名。
用户1421392
2022/12/09
2.6K0
Golang 的类型与零值
Golang 中定义不同类型的变量,不是通过声明就是通过 make 或 new 。 未显式初始化时,将被赋予一个默认值,该默认值便为该类型的零值。不同的类型有不同的零值。
恋喵大鲤鱼
2022/05/09
4140
[Go]go语言中的零值
var b bool // bool型零值是false var s string // string的零值是""
唯一Chat
2020/06/04
1K0
Oracle实现like多个值的查询
某天客户有一个需求,给定一批的手机号码或者电话号码,查询出相关的通话记录,以及相关的一些信息。
星哥玩云
2022/08/16
2.8K0
Oracle实现like多个值的查询
CSS一个div内两个子元素的高度自适应
3-1-2019更新:使用flex布局,align-items:flex-start即可。
gojam
2019/05/14
5.1K0
Golang语言关于零值的定义
原文:https://golang.org/ref/spec#The_zero_value The 零值 当一个变量或者新值被创建时, 如果没有为其明确指定初始值,go语言会自动初始化其值为此类型对应的零值, 各类型零值如下: false : bool, 0: integer, 0.0: float, "": string, nil : pointer, function, interface, slice, channel, map 。对于复合类型, go语言会自动递归地将每一个元素初始化为其类型对应的零
李海彬
2018/03/20
1.1K0
DNS查询的两种方式:递归查询和迭代查询
1、递归解析 当局部DNS服务器自己不能回答客户机的DNS查询时,它就需要向其他DNS服务器进行查询。此时有两种方式,如图所示的是递归方式。局部DNS服务器自己负责向其他DNS服务器进行查询,一般是先向该域名的根域服务器查询,再由根域名服务器一级级向下查询。最后得到的查询结果返回给局部DNS服务器,再由局部DNS服务器返回给客户端。
小狐狸说事
2022/11/17
6.8K0
DNS查询的两种方式:递归查询和迭代查询
Python实现对规整的二维列表中每个子列表对应的值求和
前几天在Python白银交流群有个叫【dcpeng】的粉丝问了一个Python列表求和的问题,如下图所示。
Python进阶者
2022/06/05
4.6K0
Python实现对规整的二维列表中每个子列表对应的值求和
零信任硬币的两面
零信任硬币的一面是访问控制和身份管理,硬币的另一面是主机微分段。前者本质上仍是由外到内的方法,而后者则是由内到外的方法。两者虽然都要解决访问问题,但前者是从用户角度来看,而后者则是从应用程序和工作负载的角度来看。
网络安全观
2021/03/16
5260
LeetCode 1458. 两个子序列的最大点积(动态规划,类似编辑距离)
数组的非空子序列是通过删除原数组中某些元素(可能一个也不删除)后剩余数字组成的序列,但不能改变数字间相对顺序。 比方说,[2,3,5] 是 [1,2,3,4,5] 的一个子序列而 [1,5,3] 不是。
Michael阿明
2020/07/13
5400
LeetCode 1458. 两个子序列的最大点积(动态规划,类似编辑距离)
php数组中模糊查询给定的值
第一种:查询给定的值索引不变 /** * 在数组中模糊搜索给定的值 * @param $data * @param $keyword * @return array */ function searchArr($data,$keyword){ $arr = array(); foreach($data as $key=>$values ){ if (strstr( $values , $keyword ) !== false ){ $arr
素描
2019/09/19
6.4K0
MySQL关于日期为零值的处理
前面文章我们介绍过日期和时间字段的查询方法,最近遇到日期值为零的问题。原来了解过和 sql_mode 参数设置有关,但还不是特别清楚,本篇文章将探究下MySQL怎么处理日期值为零的问题。
MySQL技术
2020/06/12
4.6K0
MySQL关于日期为零值的处理
python后的返回值为零
python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零
狼啸风云
2019/03/15
1.7K0
python后的返回值为零
Excel查找值技巧,根据两个值来查找相对应的值
在Excel中,查找的需求多种多样,关键是看你怎么样搭配各种函数来实现了。如下图1所示,要根据代码和编号两个值来查找对应的数量。
fanjy
2023/09/15
3K0
Excel查找值技巧,根据两个值来查找相对应的值
Java交还两个变量的值
package com.binbin.test; public class SwitchVariable { public static void main(String[] args) { Data data = new Data(); data.m = 10; data.n = 20; System.out.println("m = " + data.m + ",n = " + data.n); System.out.println("++++++++++没有交换之前+++++
Linuxcc
2022/02/04
9210
Python交换两个变量的值
首先,来回顾一下C语言中交换两个数字的三种方法,最简单的方式也需要一个中间人来暂存其中某一个值。但是在python下,这个操作会异常的简单。
zy010101
2021/06/09
1.4K0
判断两数之间的最大值
判断两数之间的最大值 可直接利用Java自带的函数(abc 绝对值函数)再结合三元运算符实现 public class TestMax { public static void main(String[] args) { System.out.println(max(5,6)); } private static int max(int i, int j) { // TODO Auto-generated method stub // abc 绝对值函数 return
呆呆
2021/10/06
5630

相似问题

日志响应比为零的“元Log”

12

查找两个子查询之间的不同值

40

获得两个子查询的最小值。

25

按min值组合两个子查询

13

两个子查询的SQL最大值

333
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文