1. 程式人生 > >SQL語句case when外用sum與count的區別

SQL語句case when外用sum與count的區別

如下這個表TEST:

  category | commdity | price
 ------------+------------+-------
  衣服        | T恤        |  1000
  辦公用品 | 打孔器   |   500
  廚房用具 | 菜刀       |  3000
  廚房用具 | 高壓鍋    |  6800
  廚房用具 | 叉子       |   500
  廚房用具 | 擦菜板    |   880
  辦公用品 | 圓珠筆    |   100
  衣服        | 運動T恤  |  4000

 如果我想把商品按照1000元以下,1000-3000, 3000 以上分為三個檔次顯示出來,正確的語句是:

 SELECT SUM (CASE WHEN price <= 1000 THEN 1 ELSE 0 END)AS low,
 SUM (CASE WHEN price BETWEEN 1001 AND 3000 THEN 1 ELSE 0 END)AS mid,
 SUM (CASE WHEN price > 3000 THEN 1 ELSE 0 END)AS high FROM TEST;

 得出結果
  low | mid | high
 -----+-----+------
    5 |   1 |    2
當把上述語句的sum換成count時,得出結果:
  low | mid | high
 -----+-----+------
    8  |   8   |    8
如果只是用列來顯示,SELECT COUNT(price) FROM TEST WHERE price <= 1000 可以得出正確的結果:

 low 
 ----- 
    5  
所以用sum的結果是對的。
原因是什麼呢?

三個case語句效果相同,其實就是類似於增加一個欄位,這個欄位,滿足條件的為1,不滿足的是0,這樣sum的效果,就是將所有的1加起來,也就是所有滿足條件的記錄個數。

而count,會不管是1還是0,都會統計,這樣怎麼算都是總條目數8個。

相關推薦

SQL語句case when外用sumcount區別

如下這個表TEST: category | commdity | price ------------+------------+------- 衣服 | T恤 | 1000 辦公用品 | 打孔器 | 500 廚房用

sql語句case when then end as 以及from前有逗號會報錯

sql 語句 from前面有逗號,會報錯,顯示某一欄位名稱不在表內; /usr/bin/python2.7 /home/sc/PycharmProjects/sc/model-feature-engi

使用SQL語句統計資料時sumcount函式中使用if判斷條件

首先舉個栗子(不想看的話直接下面看總結): order_type:訂單型別 open_id:使用者唯一標識 SELECT         date(create_time) AS '當天日期',         sum(real_price) AS '當天總收入',

sql語句case when使用和date_formate()的使用,DATEDIFF(欄位1,欄位2)獲取天數,常用的MYSQL的函式

SELECT     CASE WHEN id = 1 THEN     'id為1' WHEN id = 2 THEN     'id為2' ELSE     '都大於2' END AS '屬性名' FROM     alq_hunter ORDER BY    id

專案中用到的sql語句(case when...then... end )

        String sql = "select t.ID,t.ORDER_NO,t.TASK_ID,t.TASK_NAME, "                     + "t.TASK_START_TIME,t.TASK_END_TIME,t.USED_TIM

oracle 的 sql 語句 case when 用法

示例 with tab1 as     (select              case                   when  (count(su.insu_pkg_id)>0) then 2                   else 0

SQL語句sumcount區別

表fruitid     name    price1     apple     1.002     pear       4.00select count(price) from fruit; ----執行之後結果為:2  (表示有2條記錄)select  sum(price) from fruit;--

SQL case when then end根據某列資料內容在新列顯示自定義內容 SQL利用Case When Then多條件判斷SQL 語句

select ID,Username,namer=(case when(score<='50') then '實習' when(score>'50' and score<='500' ) then

一個sql的四種寫法:sum...case.whensum if、select(select..)、group by

select (select SUM(LOANEE_AMOUNT) FROM  t_zg_loanee_apply a WHERE  DELETE_STATUS = 0 ) as 'JE', (select SUM(LOANEE_AMOUNT) FROM  t_zg_loanee_apply a WH

SQLcase when語句巢狀使用

1、簡單的case when語句:      case sex when ’1' then '男' when ’2’ then '女’else ’其他’ end 2、複雜的case when語句:      case when month in (01,02,03) then '第一季度' when mon

sql控制流程語句case when/if/ifnull/null if

select *,case t.name when 1 then '男' when 2 then '女' end as sexfrom tt t 結果:   一.            控制流程函式 1.CASE value WHEN [compare-value]THEN result [WHEN [c

2、SQL Server:SQL利用Case When Then多條件判斷SQL 語句

第一種:select  ID,(case when 條件一  and 條件二  then 0  when 條件三  and  條件四  then  1 else 2 end) as  count,name  from  tablename

SQL利用Case When Then和access 利用iif多條件判斷SQL 語句

SQLserver: Select top 100 State,JoinState, (case when State=1 and Joinstate=0 then 2 when S

SQLcase when then用法(用於分類統計)

char purge 格式 但是 統計 spa 比較 log 永遠 ase具有兩種格式。簡單case函數和case搜索函數。 --簡單case函數 case sex when ‘1‘ then ‘男‘ when ‘2‘ then ‘女’

SQL利用Case When Then多條件

sum mage 需要 而且 例如 user 英國 根據 來看 CASE WHEN 條件1 THEN 結果1 WHEN 條件2 THEN 結果2 WHEN 條件3 THEN 結果3 WHEN 條件4 THEN 結果4......... WHEN

關於hibernate中hql語句 case when的寫法

case when select rom org nat where for code when java hql case when的用法 if(null == sorter){ hql.append(" order by m.mDate des

SQLcase when

參考 技術分享 搜索 fec country nbsp lec center then 大致學習了下SQL的功能語句,case when 類似於c語言中的switich case語句,多分支選擇,不同的值可以有不同的返回量。比如,在一個包含了sex字段的表中,可能的值為1、

通過xml處理sql語句時對小於號大於號的處理轉換

當我們需要通過xml格式處理sql語句時,經常會用到< ,<=,>,>=等符號,但是很容易引起xml格式的錯誤,這樣會導致後臺將xml字串轉換為xml文件時報錯,從而導致程式錯誤。 這樣的問題在iBatiS中或者自定義的xml處理sql的程式中經常需要我們來處理。其實很簡

xml處理sql語句時對小於號大於號的處理轉換

當我們需要通過xml格式處理sql語句時,經常會用到< ,<=,>,>=等符號,但是很容易引起xml格式的錯誤,這樣會導致後臺將xml字串轉換為xml文件時報錯,從而導致程式錯誤。 這樣的問題在iBatiS中或者自定義的xml處理

SQLcase when子句的使用(連續變數的區間分段統計場景)

某院系2018年計劃舉辦為期一週的學生電競通關能力預測比賽。現已進入決賽,有6位選手入圍。要求根據給定的兩張表如下所示: UserUser表( user_id int,—使用者ID user_name varchar(50),—使用者姓名 user_type int—使用者型別 ) Game