I have the following data in rows:  1 2 3 6 7 15 16   I want to write a SELECT statement to return contiguous ranges. Given the sample data above, the output would be:  1,2,3 6,7 15,16
I've got about a billion rows of data in a table with a name and an integer in the range 1-288.  For a given name, every int is unique, and not every possible integer in the range is present--so there are gaps.  This query generates an example case:  --what I have: SELECT * FROM ( VALUES ('foo', 2),               ('foo', 3),               ('foo', 4),               ('foo', 10),               ('foo', 11),               ('foo', 13),               ('bar', 1),               ('bar', 2),               ('bar', 3)      ) AS baz ("name", "int")   I'd like to generate a lookup table with a row for each name and sequence of contiguous integers.  Each such row would contain:  name   --  the value of the name column start  --  the first integer in the contiguous sequence end    --  the final value in the contiguous sequence span   --  end - start + 1  This query generates example output for the above example:  --what I need: SELECT *  FROM ( VALUES ('foo', 2, 4, 3),               ('foo', 10, 11, 2),               ('foo', 13, 13, 1),               ('bar', 1, 3, 3)      ) AS contiguous_ranges ("name", "start", "end", span)   Because I have so many rows, more efficient is better.  That said, I only have to run this query once, so it isn't an absolute requirement.  Thanks in advance!  Edit:  I should add that PL/pgSQL solutions are welcome (please explain any Fancy Tricks--I'm still new to PL/pgSQL).
On many occasions, I've found questions that should be moved to AskUbuntu, or Unix/Linux, but when I click the "flag" link, I don't have those as options. I hate to leave something flagged as off-topic with no suggestion of where to put it, so I just cancel.   What determines the sites that show up on that list? Is it best to flag them off topic even if the ideal site doesn't appear? Is the product of symmetric positive semidefinite matrices positive definite? I have a issue with my Drupal installation, for example:   when I enable or disable the modules, It redirects me to a blank page, when I create a new content type and save it, redirects me to a blank page, when I add a new view and save it, it redirects me to a blank page, when I try to clear the cache, it redirects me back to a blank page, or in similar cases.   Basically all the confirmation pages redirect me to a white screen. When I refresh it again, it shows me the page. I tried to increase the PHP memory value but it doesn't help.  Are there any other solutions for this?  The error which I'm having:      Fatal error: Allowed memory size of 100663296 bytes exhausted (tried to allocate 8192 bytes) in sites/all/modules/views/plugins/views_plugin_localization_none.inc on line 1 JavaScript: Bitwise shift of long long number I need to bitwise shift a value 64 times in JavaScript. But JavaScript starts rounding after 32.  For example:  for(var j = 0; j &lt; 64; j++) {     mask = mask &lt;&lt; 1;     console.log(mask); }   This prints value from 0 to 1073741824 but then rounds of and starts printing 0. What exactly are the Python scoping rules?  If I have some code:  code1 class Foo:    code2    def spam.....       code3       for code4..:        code5        x()   Where is x found?  Some possible choices include the list below:   In the enclosing source file In the class namespace In the function definition In the for loop index variable Inside the for loop   Also there is the context during execution, when the function spam is passed somewhere else. And maybe  pass a bit differently?  There must be a simple reference or algorithm somewhere.  It's a confusing world for intermediate Python programmers. Windows 10 doesn't shut down properly Let L1 be the line passing through the point $P_1=(−11, 10, −1)$ with direction vector $\vec d_1=\begin{bmatrix}−2\\ 3\\ −1\end{bmatrix}t$, and let $L_2$ be the line passing through the point $P_2=(−8, 9, 10)$ with direction vector $\vec d_2=\begin{bmatrix}−1\\ 3\\1\end{bmatrix}t$. Find the shortest distance, $d$, between these two lines, and find a point $Q_1$ on $L_1$ and a point $Q_2$ on $L_2$ so that $d(Q_1,Q_2) = d$.   I dont really understand how to properly approach this question, how do i start? Suppose I have a directory structure as follows  test test/a test/b   Now I want to execute a command, such that in the . folder I can execute a command on the basename of the files a and b.  So basically, I want something like this, which I naively tried  find test -type f -exec touch `basename {}` \;   Only, this does not result in empty files a and b in the parent directory. Suppose that my touch command can only take a single argument.  This will result in a directory structure like this  a b test test/a test/b   I know how to do this in a bash script, but I am interested in single command solution. C: pointer to struct in the struct definition Determine app that keeps turning on bluetooth Problem with sudo apt get update: The repository cdrom... does not have a Release file Continuous bijection from $(0,1)$ to $[0,1]$ Does there exist a continuous bijection from $(0,1)$ to $[0,1]$? Of course the map should not be a proper map. Which versions of C++ redistributables can I remove? I have a number of Microsoft Visual C++ 2005 and 2008 Redistributable and I would like to know which ones are safe to remove, because there are actually more than 10 installed on my computers.   Microsoft Visual C++ 2005 ATL Update kb973923 - x64 8.0.50727.4053 Microsoft Visual C++ 2005 Redistributable Microsoft Visual C++ 2005 (x64) Microsoft Visual C++ 2008 ATL Update kb973924 - x64 9.0.30729.4148 Microsoft Visual C++ 2008 Redistributable - x64 9.0.30729.17 Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.17 Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.4148 Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.4974 Microsoft Visual C++ 2010 x64 Runtime - 10.0.30319   It could be that these versions are all different, but a confirmation of that is fine for me as well. Thanks in advance.  PS. I'm using an x64 machine one windows 7. How to write in bibliography (package natbib) letter "a" with two dots above? Specially, I mean the word Birkhäuser.  Is there a general rule or way how to write such umlauts or other accented letters in bibliographies? What does "cpu MHz" field mean in the /proc/cpuinfo of a hyper-threading cpu? The CPU is a i7-3770@3.40GHz. It has 4 cores and each core has 2 threads. Here is the dmidecode output:  # dmidecode -t 4 # dmidecode 2.9 SMBIOS 2.7 present.  Handle 0x0042, DMI type 4, 42 bytes Processor Information     Socket Designation: SOCKET 0     Type: Central Processor     Family: &lt;OUT OF SPEC&gt;     Manufacturer: Intel(R) Corporation     ID: A9 06 03 00 FF FB EB BF     Version: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz     Voltage: 1.1 V     External Clock: 100 MHz     Max Speed: 3800 MHz     Current Speed: 3400 MHz     Status: Populated, Enabled     Upgrade: &lt;OUT OF SPEC&gt;     L1 Cache Handle: 0x003F     L2 Cache Handle: 0x003E     L3 Cache Handle: 0x0040     Serial Number: Not Specified     Asset Tag: Fill By OEM     Part Number: Fill By OEM     Core Count: 4     Core Enabled: 4     Thread Count: 8     Characteristics:         64-bit capable   It will be 8 logic core in a system, like what shows in /proc/cpuinfo. But can any one tell why the cpu MHz of a core is 1600MHz? I guess there is 2 threads in a core, so a hw thread freq may be about the half of the core's? How this number is calculated?  processor   : 7 vendor_id   : GenuineIntel cpu family  : 6 model       : 58 model name  : Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz stepping    : 9 cpu MHz     : 1600.000 cache size  : 8192 KB physical id : 0 siblings    : 8 core id     : 3 cpu cores   : 4 apicid      : 7 initial apicid  : 7 fpu     : yes fpu_exception   : yes cpuid level : 13 wp      : yes flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 x2apic popcnt aes xsave avx lahf_lm ida arat tpr_shadow vnmi flexpriority ept vpid bogomips    : 7013.49 clflush size    : 64 cache_alignment : 64 address sizes   : 36 bits physical, 48 bits virtual power management:   Also, here is the output of lshw and lscpu command. There are also 1600MHz mentioned.   lshw info:  #lshw -class processor   *-cpu                           description: CPU        product: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz        vendor: Intel Corp.        physical id: 42        bus info: cpu@0        version: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz        slot: SOCKET 0        size: 1600MHz        capacity: 3800MHz        width: 64 bits        clock: 100MHz        capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp x86-64 constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 x2apic popcnt aes xsave avx lahf_lm ida arat tpr_shadow vnmi flexpriority ept vpid cpufreq   lscpu info:  #lscpu Architecture:          x86_64 CPU op-mode(s):        32-bit, 64-bit CPU(s):                8 Thread(s) per core:    2 Core(s) per socket:    4 CPU socket(s):         1 NUMA node(s):          1 Vendor ID:             GenuineIntel CPU family:            6 Model:                 58 Stepping:              9 CPU MHz:               1600.000 Virtualization:        VT-x L1d cache:             32K L1i cache:             32K L2 cache:              256K L3 cache:              8192K Phone Call On TextView Click How do I create an invisible character? I cannot remember how to create an invisible character in LaTeX, i.e. I want to put a space that has the width of a particular character, say `M'. I know there is a command for this, and this is a really dumb question, but my Google-fu has failed me. Horizontal line of custom length like an — Is there a way to get a custom-length horizontal line that appears like a "longer em-dash", if you will? PHP global in functions I have read the Rules of a competition. The text of the Rules include a sentence as follows:     As per stated in the Rules the entrants will be notified by May 30th 2010.   Does the sentence above mean that May 30th is included in the term of notification or not?